`
TRAMP_ZZY
  • 浏览: 133071 次
社区版块
存档分类
最新评论

Java 学习笔记(五)

    博客分类:
  • Java
阅读更多
1. TreeSet 以有序状态保持并可防止重复。
	HashMap 可用成对的name/value 来保存于取出。
	LinkedList 正对经常插入或删除中间元素所设计的高效率集合。
	HashSet 防止重复的集合,可快速地寻找相符的元素。
	LinkedHashMap 类似HashMap,但可记住元素插入的顺序,也可以设定成依照元素上次存取的先后顺序来排序。
	
2. 泛型意味着更好的类型安全性。运用泛型就可以创建类型安全更好的集合,让问题尽可能在编译期间就能抓到,而不会
	等到执行期才冒出来。

3. public <T extends Animal> void takeThing(ArrayList<T> list) 跟
	public void takeThing(ArrayList<Animal> list) 的区别。
	上面的方法表示任何 Animal 类或者其子类都是可以的,
	下面的则表明只能是 Animal 类型的。
	
4. 以泛型的观点,extends 代表 extend 或 implement。

5. List
	对付顺序的好帮手。
	Set 
	注重独一无二的特质。
	Map
	用 key 来搜索的专家。key 可以引用相同的对象,但是 key 本身不能重复。
	
6. 引用相等性 堆上同一对象的两个引用。想要知道两个引用是否相等,可以使用 == 来比较变量上的字节组合。
	对象相等性 堆上两个不同对象在意义上是相等的。
	如果想要把两个不同的 song 对象视为相等的,就必须覆盖过 Object 继承下来的 hashCode() 方法与 equals()方法。
	
7. HashSet 通过 hashCode() 来判断一个对象是否已经被加入了,当 hashCode 是相异的,则hashSet 认为两个对象不可能
	相同。当HashSet 找到相同 hashCode 的两个对象,它会调用 equals 来判断两个对象是否真的相同。如果两者相同,
	则HashSet 就会知道要加入的项目已经重复了。add()方法会返回值告诉你是否添加成功。

8. hashCode() 的默认行为是对在 heap 上的对象产生独特的值。如果你没有override 过hashCode 则该class 的两个对象
	怎样都不会被认为是相同的。
	equals() 的默认行为是执行 == 的比较,也就是会去测试两个引用是否对 heap 上同一个对象。如果equals() ,
	没有被覆盖过,两个对象则永远也不会被视为相同的。因为不同的对象有不同的字节组合。
	a.equals(b) 必须与 a.hashCode() == b.hashCode() 等值
	但 a.hashCode() == b.hashCode() 不一定要与 a.equals(b) 等值。
	
9. hashcode 是用来缩小寻找成本的,并不能唯一的确定一个对象。真正的是否相等还是需要调用 equals() 来判断。

10. TreeSet 的元素必须是 comparable 
	1)集合中的元素必须是有实现 comparable 接口 或者
	2)使用重载、取用 Comparator 参数的构造函数创建 TreeSet 
	
11. Map 的 key 通常是 String 也可以是任何 Java 的对象。
	
12. 数组的类型是在运行期间检查的,但是集合的类型是在编译期间。
	当使用带有 <?> 时,编译器是不会让我们加入任何东西到集合中的。 
	
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics