1,范型和类型安全的容器
@SuppressWarning("unchecked") 类型检查的警告, 被忽略!
Collection:一个独立元素的序列,这些元素都服从一个或多个规则。
Map:一组成对的“键值对”对象,允许你使用键来查找值。
2,容器的打印
打印数组,用Arrays.toString()来打印。打容器则不需要,直接system.out.println(collection)即可。
ArrayList,LinkedList都是List类型,前者随机访问比较快,后者优势在于顺序访问;
HashSet,TreeSet,LinkedHashSet都是set,每个相同的项只保存一份;
HashSet速度最快;
TreeSet按照升序保存对象;
LinkedHashSet按照被添加的顺序保留对象。
Map使得 你可以用健来查找对象。
HashMap:最快的查找技术;
TreeMap:按升序保留键;
LinkedHashMap:按照插入顺序保留键,还保留了HashMap的查询速度。
3,迭代器
迭代器是一个对象,它的工作是遍历并选择序列中的对象,而客户程序员不必知道或关心该序列底层的结构。通常称为
轻量级对象。因为创建他的代价很小:java的迭代器只能单向移动:
4,ListIterator
ListIterator是一个更加强大的Iterator字类型,它只能用于各种list的访问。它可以双向移动访问。
public class ListIteration {
public static void main(String[] args) {
List<Pet> pets = Pets.arrayList(8);
ListIterator<Pet> it = pets.listIterator();
while(it.hasNext())
System.out.print(it.next() + ", " + it.nextIndex() +
", " + it.previousIndex() + "; ");
System.out.println();
// Backwards:
while(it.hasPrevious())
System.out.print(it.previous().id() + " ");
System.out.println();
System.out.println(pets);
it = pets.listIterator(3);
while(it.hasNext()) {
it.next();
it.set(Pets.randomPet());
}
System.out.println(pets);
}
} /* Output:
5,各种队列和栈的行为,由LinkedList提供支持。
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(); }
} ///:~
6,新程序中不应该使用过期的Vector,Hashtable和Stack