通常来说集合有两大根接口,Collection和Map,Collection下边有三个子接口分别是:Set、Queue、List ,所以Set、Queue、Lis和Map将java集合分为三大类。(一般准备这四类即可)
Set集合-----> 是一个罐子,讲一个对象添加到Set集合中时,Set集合无法记住添加这个元素的 顺序,所以Set集合中元素不允许重复
List集合----->像一个数组,可以记住添加元素的 顺序,可重复
Map集合----->保存的每项数据是key->value的形式,无序
总结如下:
Set集合:无序不可重复
List集合:有序可重复
Map集合:无序不可重复
Set接口:
HashSet类:
HashSet是Set集合的 典型实现,其中不得不说两个方法equals()和hashCode()
HashSet集合判断两个元素相等的标准是两个对象通过equals()方法比较相等,并且通过hashCode()方法返回值也相等。
hashCode()方法通过元素的hashCode值来计算存储位置,当访问该元素时候,HashSet先计算该元素的hashCode值,然后直接到该hashCode值对应的存储位置去取出该元素。这就是HashSet很快的原因。
LinkedHashSet类:
该类是HashSet类的子类,也是根据hashCode值来决定元素的存储位置的,但他同时使用了链表维护顺序,也就是说当遍历LinkedhashSet集合里的元素时,LinkedhashSet将会按照元素的添加顺序来访问集合里的元素,因为要维护元素的插入顺序,所以性能略低于HashSet。
TreeSet类:
TreeSet是Set接口子接口SortedSet的实现类,可以确保集合元素处于排序状态。
有序:元素插入顺序和存储循序一致
无序:元素插入顺序和存储循序一致