从这章开始,就要涉及到很多java的类库了,有了java的基本概念,这些应该比较容易一些
- 基本概念,两种类型:Collection,Map
- 添加一组对象
- Collections.addAll(Collection c, ...)
- Arrays.asList()输出作为list,但是底层是数组,不能调整尺寸
- List接口在Collection的基础上添加了大量的方法,包括subList,containsAll(与顺序无关),addAll(pos, List),removeAll,retainAll
- 迭代器。Java的迭代器只能单向移动,用来 iterator()返回迭代器,next,hasNext,remove。java中迭代器的操作对象是最近访问过的对象
- listIterator是一个更加强大的Iterator,可以双向移动,it.next, it.nextIndex, it.previousIndex
- Stack
public class Stack<T> { private LinkedList<T> storage = new LinkedList<T>{}(); public void push(T v) { storage.addFirst(v); } public T peek() { return storage.getFirst();} public T pop() { return storage.removeFirst(); } public boolean empty() { return storage.isEmpty; } public String toString() { return storage.toString(); } }
- set不接受重复元素, haseSet使用散列,treeSet使用红黑树,自动排序, LinkedHashSet保持添加的顺序
- Map:get,put,contains, keySet,values
- Queue接口,LinkdedList支持队列行为。方法 offer和peek。peek在队列为空的时候返回null,element在队列为空的时候抛出异常,poll和remove同理
- PriorityQueue
- 不存在任何从数组到Iterable的自动转换,必须使用Arrays.asList来手工转换
- 适配器方法惯用法:可以提供多个迭代器,在foreach中使用提供的Iterable对象