关系图:
Collection Iterator
Collection接口的iterator() 和 toArray()方法可获得集合中所有元素。
通过Collection接口的iterator()方法获得一个Iterator对象后,如果被当前线程或其它线程给修改过后,当调用这个Iterator对象的next()方法会导致java.util.ConcurrentModificationException异常。这是Iterator对象的快速失败机制(fail-fast)
Collections:实用方法类。
另:Iterator 和 Iterable 区别
java.util.Iterator
Iterator是迭代器类,而Iterable是接口。
SetList 类都实现了Iterable接口,这样对象就可以调用iterator()方法。
--------
Set:没有重复对象;主要两个实现类:HashSet,TreeSet(排序功能);另还有一个LinkedHashSet,有较好的插入和删除性能。
TreeSet中的元素会自动排序,里面的元素必须是同类型,且实现了Comparable接口。
Comparator接口,用来实现用户自定义比较方法,使用它更灵活。在new时可指定传入。
----
List:线性结构,主要有ArrayList、LinkedList。LinkedList方便实现栈和队列。
ArrayList还实现了RandomAccess接口,它只是一个标识,并没有具体实现,标识这个类有快速随机访问的属性。
ArrayList结合 Comparable和Collections.sort(List)也能实现排序。
List.listIterator()返回一个ListIterator。ListIterator接口 继承了 Iterator接口,它额外提供了几个方法,如hasPrevious() previous()。
----
Map:主要两个实现类,HashMap、TreeMap。
还有一个实现类:LinkedHashMap保存了记录的插入顺序,在用Iterator遍历LinkedHashMap时,先得到的记录肯定是先插入的.
几个方法:
entrySet():返回一个Map.Entry类型的集合,每一个Entry类型代表一对键与值,其中getKey()返回键,getValue()返回值。
keySet():返回所有key的集合。
values():返回所有值的集合。
------
HashMapHashSet两个重要属性:容量、负载因子(size/capacity)。参考:http://www.importnew.com/18633.html
hash判重规则:hashCode(),再是equals()。
- add()方法源码, 按照方法的步骤来说:
- * 先看hashCode()值是否相同
- * 相同:继续走equals()方法
- * 返回true: 说明元素重复,就不添加
- * 返回false:说明元素不重复,就添加到集合
- * 不同:就直接把元素添加到集合
参考:http://blog.csdn.net/angelia_wyy_wyy/article/details/51820767