`
hao861002
  • 浏览: 87083 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

java复习第十天

阅读更多

一、复习内部类
1、成员内部类
    可以访问外部类的私有成员,外部类类名.this.属性
    构造成员内部类对象,必须先构造一个外部类对象,外部类对象.new 构造内部类对象
2、静态内部类
    只能访问外部类的静态成员
    构造静态内部类对象时,不再需要构造外部类对象
3、局部内部类
    在外部类方法内定义的内部类
    不仅能访问外部类的私有成员,而且还能访问外部类的局部变量,但是要求局部变量是final的
4、匿名内部类
    局部内部类,用于实现一个借口或者继承一个类,只会构造一次

内部类的作用:
    访问外部类的私有成员,不破坏封装。可以给编程带来一些方便
    我们可以把接口公开,把接口的实现类以内部类的形式隐藏起来。强制用户通过接口来实现弱耦合
    接口+内部类实现多继承

二、List接口的实现类
1、ArrayList
   底层使用数组实现
2、Vector
  ArrayList  轻量级 快 线程不安全
  Vector     重量级 慢 线程安全的
3、LinkedList
  底层使用双向循环链表实现
  ArrayList   数组 查询快 增删操作慢
  LinkedList  链表 查询慢 增删操作快  栈
  使用组合复用实现栈

三、Set接口
1、HashSet
Set的实现类的集合对象中不能够有重复元素,HashSet也一样是使用了一种标识来确定元素的不重复,是元素内容不重复
HashSet用一种算法来保证集合中的元素是不重复的,HashSet的底层实现还是数组。
Object类中的hashCode()的方法是所有子类都会继承这个方法,这个方法会用Hash算法算出一个Hash(哈希)码值返回,HashSet会用Hash码值去和数组长度取模,
模(这个模就是对象要存放在数组中的位置)相同时才会判断数组中的元素和要加入的对象的内容是否相同,如果不同才会添加进去。

Hash算法是一种散列算法。

注意:所有要存入HashSet的集合对象中的自定义类必须覆盖hashCode(),equals()两个方法,才能保证集合中元素容不重复。
      在覆盖hashCode()方法时,要使相同对象的hashCode()方法返回相同值,覆盖equals()方法再判断其内容。为了保证效率,所以在覆盖hashCode()方法时,也要尽量使不同对象尽量返回不同的Hash码值。

如果数组中的元素和要加入的对象的hashCode()返回了相同的Hash值(相同对象返回相同整数),才会用equals()方法来判断两个对象的内容是否相同(不同对象返回不同整数)。

练习:
把若干Employee对象放在Set中并遍历,要求没有重复元素

2、SortedSet接口是Set的子接口。
TreeSet是SortedSet接口的实现类,他可以对集合中的元素进行排序。
要存放在TreeSet中自定义类的对象,这个类要么是已经实现了Comparable接口,要么是能给出Comparator比较器,
TreeSet可以自动过滤掉重复元素所以不用重载hashCode()方法,TreeSet会根据比较规则判断元素内容是否相同,TreeSet会在元素存入时就进行了排序。
判断对象重复的依据:compareTo()方法的返回值为0,就是重复元素
(在TreeSet给出排序规则时,一定要注意对象内容相等的条件,一定要注意在主观的认为两个对象内容相同时,才可以使用比较少的条件来进行判断)

在要排序时才使用TreeSet类(存储效率比较低),HashSet的存储效率比较高,在需要为HashSet的对象排序时,就可以把HashSet中的元素放入TreeSet。

四、Map
Map中只可以存放键值对(Key,value),其中Key是不可以重复的。Key和value是一一对应的。

HashMap,是Map接口的实现类,Key时无序存放的,其中Key是不可以重复的,它也是通过Hash码值来保证Key不重复的,Key和value是一一对应的。
如果要加入的键值对和HashMap中键值对的Key是相同的就会将这个集合中的Key所队应的value值进行覆盖,在使用自定义类型作为Key时,那就是要覆盖hashCode(),equals()方法,也就是和HashSet中要放入自定义类型是的处理方法相同。
这个类的对象是线程不安全的。

遍历:(1)vlaues() 返回所有值(value)的集合,是一个Collection
      (2)keySet() 返回所有键对象的集合,是一个Set
          过遍历这个Set,用get()方法来获得Key所对应的value,也就遍历了Map。

Hashtable,也是Map接口的实现类,他和HashMap比较相似,只不过这个类对象是重量级的,也是线程安全的。他不允许Key和value为null。

Properties,这个类是Hashtable的子类,他的Key和value只能是字符串。

SortedMap是Map的子接口
TreeMap,是SortedMap的实现类,他会按照Key进行排序。和TreeSet类一样,在使用自定义类作Key时,要用自定义类实现Comparable接口。



练习:
达内希望在学生毕业的时候统计出学生在校期间考试成绩的排名,写一个Student类,其中用集合来管理每个学生的各个科目的考试成绩,
将多个Student对象放在集合中,打印出学生的总分以及排名

(集合)
改写Bank类,采用集合的方式来管理多个Account对象
为Bank类添加一个方法
打印所有用户的总资产排名
说明:一个用户可能会有多个账号,以身份证号为准.总资产指多个账户余额的总和,不需要考虑贷款账户的贷款额

考试系统
Exam类   考试类
属性: 若干学生  一张考卷
提示:学生采用HashSet存放

Paper类   考卷类 
属性:若干试题
提示:试题采用HashMap存放,key为String,表示题号,value为试题对象

Student类     学生类
属性:姓名   一张答卷   一张考卷

Question类    试题类
属性:题号 题目描述    若干选项    正确答案(多选)
提示:若干选项用ArrayList

AnswerSheet类    答卷类
属性:每道题的答案   
提示:答卷中每道题的答案用HashMap存放,key为String,表示题号,value为学生的答案

问题:为Exam类添加一个方法,用来为所有学生判卷,并打印成绩排名(名次、姓名)



分享到:
评论

相关推荐

    java程序语言设计第十版复习题答案

    Java程序语言设计是编程学习的重要领域,特别是在第十版中,作者深入浅出地讲解了Java的核心概念和技术。...这份"java程序语言设计原书第十版基础复习题答案"将是你宝贵的参考资料,帮助你在学习过程中找到正确的方向。

    在达内学习java的笔记

    10. **Java复习第十天**:可能涵盖多线程,包括线程的创建方式、同步机制(synchronized关键字、wait()、notify()、notifyAll())以及线程池。 11. **Java复习第十一天**:可能讨论网络编程,如Socket通信,TCP和...

    java语言程序设计 进阶版 第十版 复习题答案

    本书《Java语言程序设计 进阶版 第十版》提供的复习题及其答案,旨在帮助读者巩固并深化对Java语言的理解。下面将详细讨论复习题中涉及的一些关键知识点。 1. **面向对象编程**:Java是一种面向对象的语言,复习题...

    java 语言程序设计 第十版 复习题答案

    本资源是针对"java 语言程序设计 第十版"各小节复习题的解答,但请注意,这不是课后习题的答案,两者可能存在差异。 复习题通常涵盖各个主题,包括基础语法、类与对象、继承与多态、接口、异常处理、集合框架、输入...

    JAVA书本复习题答案整合

    10. **JDBC数据库操作**:Java通过JDBC可以连接和操作各种关系数据库。复习题可能涵盖连接数据库、执行SQL语句、处理结果集等,帮助你掌握数据库交互的基本技巧。 通过这个压缩包中的复习题和答案,你可以有针对性...

    java语言程序与数据结构梁勇第十版第七章复习题答案

    在“Java语言程序与数据结构梁勇第十版第七章复习题答案”中,我们主要探讨的是Java编程语言的基础知识,特别是与数据结构相关的概念。Java作为一种面向对象的编程语言,对于初学者来说,理解其基本语法、类和对象、...

    Java语言程序设计基础第十版第十一章课后复习题答案

    ### Java语言程序设计基础第十版第十一章课后复习题答案解析 #### 11.1 关于子类与父类的关系 - **题目**: 下面说法是真是假?一个子类是父类的子集。 - **答案**: 假,子类是父类的扩展,并不是子集。 - **解析**:...

    Java语言程序设计第10版(基础篇)复习题答案

    《Java语言程序设计第10版(基础篇)》是一本深入浅出的Java编程教材,旨在帮助初学者掌握这门强大的面向对象编程语言。复习题答案提供了对每一章节核心概念的检验和巩固,帮助读者确认对每个主题的理解是否到位。...

    Java语言程序设计基础第十版第十二章课后复习题答案

    根据提供的信息,我们可以总结出以下关于《Java语言程序设计基础第十版》第十二...以上是对《Java语言程序设计基础第十版》第十二章中部分复习题答案的详细解释,希望能帮助读者更好地理解Java中的异常处理及相关概念。

    Java SE 复习资料

    1. **基础语法**:这是学习Java的第一步,包括数据类型(如基本类型和引用类型)、变量、运算符、控制结构(如if-else、switch、for、while循环)、方法、数组等。理解这些概念对于编写任何Java程序都是至关重要的。...

    JAVA复习题库JAVA复习题库

    这个"JAVA复习题库"旨在帮助学习者巩固和深化对Java语言的理解,准备相关考试或者面试。以下是对Java核心知识点的详细阐述: 1. **Java基础** - **变量与数据类型**:Java支持基本数据类型(如int、char、boolean...

    java语言程序设计原书第十版(复习题,课后题答案以及源码)

    总之,《Java语言程序设计原书第十版》提供的复习题、课后题答案和源码资源为学习者提供了全面的学习路径,从基础知识到高级技术,从理论理解到实践操作,帮助他们成为熟练的Java程序员。深入研读并实践其中的内容,...

    java 考试复习指南

    【Java 考试复习指南】 1. Java 编译过程:Java 源程序文件(扩展名为 .java)经过Java编译器编译后,会生成字节码文件(扩展名为 .class)。这是Java程序运行的基础,因为JVM(Java虚拟机)执行的是字节码。 2. ...

    Java语言程序设计(复习题,课后习题答案)第十版

    《Java语言程序设计(复习题,课后习题答案)第十版》是针对Java编程学习者的一份宝贵资源,由知名作者梁勇编撰。这本书不仅涵盖了基础班的学习内容,还深入探讨了进阶主题,旨在帮助读者全面掌握Java编程语言。尽管...

    Java复习资料

    这份"Java复习资料"包含了从第一章到第十章的详细学习内容,覆盖了Java语言的基础到高级特性,对于准备Java考试或者提升编程技能的学员来说非常有价值。 1. **第一章:Java简介** - Java的历史和发展 - Java的...

    JAVA复习ppt

    这个“JAVA复习ppt”很可能是华南理工大学为了帮助学生系统复习Java编程知识而制作的教学材料。Java的特点包括跨平台性、简单性、面向对象、健壮性和安全性,这些特性使得它成为开发桌面应用、企业级应用、移动应用...

    Java 复习资料 Java课件 Java学习

    这份“Java复习资料”包含了丰富的Java学习资源,旨在帮助学习者巩固和提升他们的Java编程技能。 Java的学习通常分为几个关键部分: 1. **基础语法**:Java的基础包括变量、数据类型、运算符、控制结构(如if语句...

    Java语言程序设计基础课后复习题答案第十三章

    Java 语言程序设计基础课后复习题答案第十三章 本部分内容将详细讲解 Java 语言程序设计基础课后复习题答案第十三章中的知识点。 一、Java 基础知识 1.1 在 Java 中,什么是可变长参数?答:在 Java 中,使用可变...

    JAVA课程总复习

    【JAVA课程总复习】 在Java编程领域,复习是巩固学习成果和提升技能的关键步骤。"JAVA课程总复习"涵盖了从基础到高级的各种Java知识点,旨在帮助开发者系统地回顾和理解这个强大而广泛应用的编程语言。 首先,我们...

    java复习Java程序设计

    在这个Java复习资料中,我们可以看到一系列关于这个主题的PPT和文档,旨在帮助学习者掌握关键概念并为期末考试做好准备。 首先,从《Java程序设计》期末复习题.doc中,我们可以预期这是一份综合性的复习指南,可能...

Global site tag (gtag.js) - Google Analytics