Java集合

关系图:

Collection Iterator 

Collection接口的iterator() 和 toArray()方法可获得集合中所有元素。

通过Collection接口的iterator()方法获得一个Iterator对象后,如果被当前线程或其它线程给修改过后,当调用这个Iterator对象的next()方法会导致java.util.ConcurrentModificationException异常。这是Iterator对象的快速失败机制(fail-fast)

Collections:实用方法类。

另:Iterator 和 Iterable 区别

java.lang.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()。

  1. add()方法源码, 按照方法的步骤来说:    
  2.  *      先看hashCode()值是否相同 
  3.  *          相同:继续走equals()方法 
  4.  *              返回true: 说明元素重复,就不添加 
  5.  *              返回false:说明元素不重复,就添加到集合 
  6.  *          不同:就直接把元素添加到集合

参考:http://blog.csdn.net/angelia_wyy_wyy/article/details/51820767

原文地址:https://www.cnblogs.com/mzzcy/p/7003423.html