本帖最后由 sanguodouble1 于 2014-3-7 11:02 编辑
恩,集合,顾名思义,就是将各种对象放到一个容器里,跟数组的区别:长度可变,存储对象可以不同 主要有两大类,Collection 和 Map 1.Collection Collection是一个集合的接口,他下面的子类有:
1.1 List接口:有序,有索引,可重复
1.1.1 ArrayList:底层以数组实现,增删满,查询快,不同步
1.1.2 LinkedList:底层以链表实现,增删快,查询满,不同步
1.1.3 Vector:以数组实现,被ArrayList取代,线程同步
Note:对于是否存在以及删除等操作,依赖的方法是元素的HashCode()和equals()方法;
而ArrayList对于判读存在以及删除等,用的只有equals()方法
1.2 Set接口:无序,无索引,不可重复
1.2.1 HashSet:无序,不重复,高效,底层以哈希表实现。不同步
保证元素唯一性的实现原理:HashCode方法和equals方法,如果HashCode相同,直接存入;如果HashCode的值相同,则调用equals方法,看是不是返回true,如果true就是相同元素了。
1.2.1.1 LinkedHashSet:有序,是HashSet的子类
1.2.2 TreeSet:有序,不重复,底层以二叉树实现。不同步
保证元素唯一性的实现原理:Comparable的compareTo()方法的返回值。
TreeSet的排序方法:
1.默认方法:自然排序,通过实现Comparable接口compareTo()方法来完成
2.比较器:如果添加的元素本身不具备可比较性或是不是自己想要的比较方式,将比较器作为参数传递进去。
通过实现Comparator接口的compare()方法,当主要条件相同时,比较次要条件
如果同时存在两种排序方法,采用第二种
2.Map 跟Collection的单一元素不同,Map存储的是键值对元素,他下面的子类有:
2.1 HashTable:有序,不可存Null的值和键,同步
Properties是HashTable的子类,他是集合和IO流的结合产物,可以保存在流中或者从流中加载
2.2 HashMap:底层以哈希表实现,可存Null值的键值对,无序(只能自定义通过key排序),高效,不同步
2.3 TreeMap;底层以二叉树实现,可排序,不同步
|