1. 当向ArrayList添加一个对象时,实际上就是将该对象放置到了 ArrayList 底层所维护的数组当中;当向 LinkedList 中添加一个对象时,实际上 LinkedList 内部会生成一个Entry 对象,该 Entry 对象的结构为:

Entry

{

Entry previous;

Object element;

Entry next;

}

其中的 Object 类型的元素 element 就是我们向 LinkedList 中所添加的元素,然后 Entry又构造好了向前与向后的引用previous、next,最后将生成的这个 Entry 对象加入到了链表当中。换句话说, LinkedList 中所维护的是一个个的 Entry 对象 。

2. 关于 Object 类的 equals 方法的特点

a) 自反性: x.equals(x) 应该返回 true

b) 对称性: x.equals(y) 为 true ,那么 y.equals(x) 也为 true 。

c) 传递性: x.equals(y) 为 true 并且 y.equals(z) 为 true ,那么 x.equals(z) 也应该为true 。

d) 一致性: x.equals(y) 的第一次调用为 true ,那么 x.equals(y) 的第二次、第三次、第 n次调用也应该为 true,前提条件是在比较之间没有修改 x 也没有修改 y 。

e) 对于非空引用 x , x.equals(null) 返回 false 。

3. 关于 Object 类的 hashCode() 方法的特点:

a) 在 Java 应用的一次执行过程当中,对于同一个对象的 hashCode 方法的多次调用,他们应该返回同样的值(前提是该对象的信息没有发生变化)。

b) 对于两个对象来说,如果使用 equals 方法比较返回 true ,那么这两个对象的 hashCode值一定是相同的。

c) 对于两个对象来说,如果使用 equals 方法比较返回 false ,那么这两个对象的 hashCode值不要求一定不同(可以相同,可以不同),但是如果不同则可以提高应用的性能。

d) 对于 Object 类来说,不同的 Object 对象的 hashCode 值是不同的(Object 类的hashCode值表示的是对象的地址)。

4. 当使用 HashSet 时, hashCode() 方法就会得到调用,判断已经存储在集合中的对象的hash code 值是否与增加的对象的 hash code 值一致;如果不一致,直接加进去;如果一致,再进行 equals 方法的比较, equals 方法如果返回 true ,表示对象已经加进去了,就不会再增加新的对象,否则加进去。

5. 如果我们重写 equals 方法,那么也要重写 hashCode 方法,反之亦然。

另外:HashSet类、SortedSet接口、Collections类(类似于Arrays)

6. Map (映射): Map 的 keySet() 方法会返回 key 的集合,因为 Map 的键是不能重复的,因此 keySet() 方法的返回类型是 Set ;而 Map 的值是可以重复的,因此 values() 方法的返回类型是 Collection ,可以容纳重复的元素。

7. 作业:参见 Lesson 4 的要求,使用集合实现,不允许使用数组。

8. 策略模式( Strategy Pattern )。通过查询资料掌握策略模式的原理。

9.阅读 TreeMap 的帮助文档,自己写一个程序,练习 TreeMap 的使用方式并且自己定

义一个 Comparator 。

圣思园——Java SE Lesson 6相关推荐

  1. 圣思园——JAVA SE Lesson 1

    1. 类是一种 抽象 的概念,对象是类的一种具体表示形式,是 具体 的概念.先有类,然后由类来生成对象( Object).对象又叫做实例( Instance ). 2. 类由两大部分构成:属性以及方法 ...

  2. 圣思园——Java SE Lesson 2

    1. 多态:父类型的引用可以指向子类型的对象. 2. Parent p = new Child(); 当使用多态方式调用方法时,首先检查父类中是否有sing() 方法, 如果没有则编译错误:如果有,再 ...

  3. 圣思园——Java SE Lesson 4

    1. 包装类(Wrapper Class).针对于原生数据类型的包装.所有的包装类(8 个)都位于 java.lang 包下.Java 中的 8个包装类分别是:Byte, Short, Integer ...

  4. 圣思园——Java SE Lesson 5

    1. 对于Java中的常量的命名规则:所有单词的字母都是大写,如果有多个单词,那么使用下划线连接即可.比如说:public static final int AGE_0F_PERSON = 20; 2 ...

  5. 圣思园——Java SE Lesson 16

    1. 如果某个 synchronized 方法是 static 的,那么当线程访问该方法时,它锁的并不是synchronized 方法所在的对象, 而是 synchronized 方法所在的对象所对应 ...

  6. 圣思园——Java SE Lesson 11

    1. 所谓自定义异常, 通常 就是定义了一个继承自 Exception 类的子类,那么这个类就是 一个自定义异常类.通常情况下,我们都会直接继承自 Exception 类, 一般 不会继承 某个运行时 ...

  7. 圣思园-----Java SE Lesson 7

    1. 有这样一个类: // getter and setter 要求:假如有若干个类 Person 对象存在一个 List 当中,对他们进行排序,分别按照名字.年龄. id 进行排序(要有正序与倒序两 ...

  8. 北京圣思园_Java SE Lesson 11

    Java SE Lesson 11 1.  所谓自定义异常,通常就是定义了一个继承自Exception类的子类,那么这个类就是一个自定义异常类.通常情况下,我们都会直接继承自Exception类,一般 ...

  9. 圣思园java se培训总结(82-)(观察者设计模式)

    世界上没有无缘无故的爱,也没有无缘无故的恨,代码也是一样.为什么点击一个按钮就会出现一个变化!这就是观察者设计模式. 观察者设计模式定义了一种一对多的关系,多个观察者对象监听一个主题对象,当主题对象发 ...

最新文章

  1. ES6关于Promise的用法详解
  2. Redis源码研究—基础知识
  3. 介绍一个基于simhash作海量文章排重的库:simhashpy
  4. [iOS] 引用外部静态库时,(类别)目录方法无法加载问题
  5. .NET 产品组问卷调查|和我们分享你的 .NET 使用情况
  6. golang开发环境配置及Beego框架安装
  7. PHP 多维数组搜索 PHP multi dimensional array search
  8. Laravel 怎么查看执行的Sql语句
  9. Error: Cannot find module ‘webpack-cli/bin/config-yargs‘ 解决办法
  10. paip. erlang语法C++语法对比attilax总结
  11. 分布式技术核心(上)-ZookeeperDubbo
  12. 私藏版64页DevOps笔记免费分享
  13. python画圆角矩形_js绘制圆角矩形
  14. Windows系统图片不显示缩略图如何解决
  15. 三国杀Excel版–让你见证Excel的神奇
  16. 签offer和签三方协议的不同
  17. 类与对象(一)----什么是类和对象
  18. Java 中验证时间格式的 4 种方法
  19. Sequence contains more than one matching element
  20. 最详细的教程axure新手入门:Axure教程

热门文章

  1. bat脚本:Windows批处理
  2. csdn怎么了???
  3. 软件测试和软件开发哪个发展更好
  4. 关于CORBA实现的介绍
  5. CC1310 架构组成,TX/RX+WOR嗅探过程,低功耗方法
  6. git clone git://github.com/ethz-asl/libnabo.git 失败 time out
  7. win10下samba 重新登录注销
  8. openstack的endpoint
  9. 10.Quartz 常用配置
  10. 公众号排版|点击图片播放音乐你不会还不会吧