1.泛型和类型安全的容器
2.基本概念
3.添加一组元素:Arrays.asList()方法接受一个数组或是一个用逗号分隔的元素列表(使用可变参数),并将其转换为一个LIst对象。Collections.addAll()方法接受一个Collection对象,以及一个数组或是一个用逗号分割的列表,将元素添加到Collection中。Collection.addAll()成员方法只能接受另一个Collection对象作为参数,因此它不如Arrays.asList()或Collections.addAll()灵活,这两个方法使用的都是可变参数列表。
4.容器的打印:List,它以特定的顺序保存一组元素;set,元素不能重复;Queue,只允许在容器的一“端”插入对象,并从另外一“端”移除对象。Map在每个槽内保存了两个对象,即键和与之相关联的值。
5.List:ArrayList,它长于随机访问元素,但是在List的中间插入和移除元素时较慢。LinkedList,它通过代价较低的在List中间进行的插入和删除操作,提供了优化的顺序访问。
6.迭代器:Java的Iterator只能单向移动,这个Iterator只能用来:1.使用方法iterator()要求容器返回一个Iterator。Iterator将准备好返回序列的第一个元素。2.使用next()获得序列中的下一个元素。3.使用hasNext()检查序列中是否还有元素。4.使用remove()将迭代器新返回的元素删除。
6(1).ListIterator:只能用于各种List类的访问;可以双向移动;产生相对于迭代器在列表中指向的当前位置的前一个和后一个元素的索引,并且可以使用set()方法替换它访问过的最后一个元素;通过调用listIterator()方法产生一个指向List开始处的ListIterator,并且还可以通过调用ListIterator(n)方法创建一个一开始就指向列表索引为n的元素处的ListIterator。
7.LinkedList
8.Stack:“栈”通常是指“后进先出”的容器。push()接受的是T类型的对象,而peek()和pop()将返回T类型的对象。peek()方法将提供栈顶元素,但是并不将其从栈顶移除。
9.Set
10.Map
11.Queue:队列是一个典型的先进先出的容器。offer()方法是与Queue相关的方法之一,它在允许的情况下,将一个元素插入到队尾,或者返回false。peek()和element()都将在不移除的情况下返回对头,但是peek()方法在队列为空时返回null,而element()会抛出NoSuchElementException异常。poll()和remove()方法将移除并返回队头,但是poll()在队列为空时返回null,而remove()会抛出NoSuchElementException异常。
11(1).PriorityQueue:优先级队列声明下一个弹出元素是最需要的元素(具有最高的优先级)。
12.Collection和Iterator
13.Foreach与迭代器
13(1).适配器方法惯用法
补充:Iterator是迭代器类,而Iterable是接口。因为Iterator接口的核心方法next()或者hasNext() 是依赖于迭代器的当前迭代位置的。 如果Collection直接实现Iterator接口,势必导致集合对象中包含当前迭代位置的数据(指针)。 当集合在不同方法间被传递时,由于当前迭代位置不可预置,那么next()方法的结果会变成不可预知。 除非再为Iterator接口添加一个reset()方法,用来重置当前迭代位置。 但即时这样,Collection也只能同时存在一个当前迭代位置。 而Iterable则不然,每次调用都会返回一个从头开始计数的迭代器。 多个迭代器是互不干扰的。