概述
Java集合主要由Collection接口(Set、List、Queue)和Map接口派生出来,常用的实现类HashSet、TreeSet、 ArrayList、LinkedList、ArrayDeque、HashMap、TreeMap。
Set集合
Set集合中不允许出现相同的元素。
HashSet类
HashSet集合通过hash算法计算对象的hashcode值来映射其内存存储地址;
如何判断是否相同:两个元素对象通过equal(obj)比较返回True,两个元素的hashcode()的返回值也相等;
规定:equal()比较返回TRUE时,两对象的hashcode()返回值也应该相等。
注意:当把可变对象添加到HashSet中后,应尽量不要修改对象中参与equal(obj)和hashcode()计算的实例变量。
TreeSet类
TreeSet集合要求元素的
类型相同,且元素类实现compareTo(obj)方法。TreeSet中的元素处于
排序状态;
如何判断是否相等:两个元素对象通过compareTo(obj)方法进行比较;
注意:不建议修改TreeSet中可变元素的实例变量;
比较分析:
都是线程不安全的;无特殊需求时,推荐使用HashSet;
List集合
list集合通过equal(obj)方法判断元素是否相等;
ArrayList类
基于数组实现的List类;线程不安全;