容器主要分为Collection和Map两种,Collection是对象的集合,而Map是存储着键值对(两个对象)的映射表。
Collection是对象的集合,继承了Iterable。
说明Collection支持快速失败机制(fail - fast),涉及到modifyconcurrentException这个经典的异常。
Map是key - value的一种数据结构,主要有以下几个实现类:
基于哈希表实现,具体可看笔记。
基于哈希表实现,是线程安全的HashMap,里面的方法都用synchronized来修饰,在JDK1.6的时候对锁进行了很大的优化,但是建议在并发环境下还是使用concurrentHashMap。
TreeMap基于红黑树来实现的。
因为HashMap是会丢失加入的元素的顺序性,因此LinkedHashMap是使用双向链表来维护元素的加入顺序,一般用来实现LRU缓存。
可以看到Collections实现了Iterable接口,而Iterable接口提供了一个产生Iterator对象的方法,使用Iterator对象则可以遍历元素,和使用forEach:
List<String> list = new ArrayList<>(); list.add("a"); list.add("b"); for (String item : list) { System.out.println(item); }