· 大量笔记存放在Github Java文件中,请移步查看:https://github.com/iGuure/AndroidCodeHub/tree/master/Java%20pratice/Thinking%20in%20Java/Collection
· 容器类:
1. Collection:
List: 有顺序
ArrayList: 数组型
LinkedList: 链表型
-- Stack:栈
-- Queue: 队列
Set: 不能重复
HashSet: 无顺序,获取元素速度最快
TreeSet: 按升序保存
LinkedHashSet: 按被添加的顺序保存
Queue: 队列
2. Map: 每个槽内保存两个对象,即键和与之相关联的值;对于每一个键,Map只接受存储一次(即不允许键值重复)
HashMap: 无顺序,查询速度最快
TreeMap: 按升序保存键
LinkedHashMap: 按插入顺序保存键,同时还保留了HashMap的查询速度
· List<Apple> apples = new ArrayList<Apple>();
这种方式并非总能奏效,因为某些类具有额外的功能,例如,LinkList具有在List接口中未包含的额外方法,而TreeMap也具有在Map接口中未包含的方法。如果你需要使用这些方法,就不能将它们向上转型为更通用的接口。
· Collection.addAll()成员方法只能接受另一个Collection对象作为参数,因此它不如Arrays.asList()或Collections.addAll()灵活,这两个方法使用的都是可变参数列表。
· ListIterator是一个更加强大的Iterator的子类型,他只能用于各种List类的访问。尽管Iterator只能向前移动,但是ListIterator可以双向移动。它还可以产生相对于迭代器在列表中指向的当前位置的前一个和后一个元素的索引,并且可以使用set()方法替换它访问过的最后一个元素。你可以通过调用listIterator()方法产生一个指向List开始处的ListIterator,并且还可以通过调用listIterator(n)方法创建一个一开始就指向列表索引为n的元素处的ListIterator。
· 新程序中不应该使用过时的Vector、Hashtable和Stack。