List

    有两种类型的List:


    (1)基本的 ArrayList,它长于随机访问元素,但是在List的中间插入和移除元素时较慢。

    (2) LinkedList,它通过代价较低的在List中间进行的插入和删除操作,提供了优化的顺序访问。LinkedList在随机访问方面相对比较慢,但是它的特性集较ArrayList更大。



    contains()方法确定某个对象是否在列表中


    remove()方法移除某个对象, removeAll()方法移除所有对象


    indexOf()方法发现该对象在List中所处位置的索引编号

    subList()方法从大的列表中创建一个片段


    toArray()方法将Collection转换为一个数组



迭代器


遍历并选择序列中的对象。java的 Iterator只能 单向移动


    (1)使用方法iterator()要求容器返回一个 IteratorIterator将准备好返回序列的第一个元素。


    (2)使用 next()获得序列中的下一个元素。


    (3)使用 hasNext()检查序列中是否还有元素。


    (4)使用 remove()将迭代器新近返回的元素删除。


//iterator迭代器
public class SimpleIteration {
	public static void main(String[] args) {
		Collection<Integer> pets = new ArrayList(10);
		for (int i = 0; i < 10; i++)
			pets.add(i);
		Iterator<Integer> it = pets.iterator();
		while (it.hasNext()) {
			Integer a = it.next();
			System.out.print(a.intValue() + " ");
		}
		System.out.println();
		it = pets.iterator();
		for (int i = 0; i < 6; i++) {
			it.next();
			it.remove();
		}
		System.out.print(pets + " ");
	}
}
 
0 1 2 3 4 5 6 7 8 9 
[6, 7, 8, 9] 
 
 




ListIterator

    ListIterator是一个更加强大的 Iterator的子类型。 ListIterator可以双向移动,还可以产生相对于迭代器在列表中指向的当前位置的前一个和后一个元素的索引,并且可以使用Set()方法替换它访问过的最后一个元素。




LinkedList


LinkedList添加了可以使其用作栈、队列或双端队列的方法。




    getFirst()element()完全一样,都返回列表的头而不移除它,如果列表为空则抛出NoSuchElementException


    peek()稍有不同,列表为空时返回null


    remove()removeFirst()也完全一样, 都移除并返回列表的头 ,如果列表为空则抛出NoSuchElementException


    poll() 稍有不同,列表为空时返回null


    addFirst()将元素插入到列表头部,add()和addLast() 将元素插入到列表尾部

    removeLast()移除并返回列表的最后一个元素



    Queue接口在 LinkedList的基础上添加了element()offer()peek()poll()remove()方法

//List的特点
public class LinkedListFeatures {
	public static void main(String[] args) {
		LinkedList<Integer> pets = new LinkedList<Integer>();
		for (int i = 0; i < 10; i++)
			pets.add(i);
		System.out.println(pets);
		System.out.println("pets.getFirst():" + pets.getFirst()); // 无返回值则抛出异常
		System.out.println("pets.element():" + pets.element());
		System.out.println("pets.peek():" + pets.peek()); // 无返回值则返回null
		System.out.println(pets);
		System.out.println("pets.remove():" + pets.remove());
		System.out.println("pets.removeFirst():" + pets.removeFirst());
		System.out.println("pets.poll():" + pets.poll()); // 无返回值则返回null
		System.out.println(pets);
		pets.addFirst(9);
		System.out.println("after addFirst(9):" + pets);
		pets.offer(34);
		System.out.println("after offer(34):" + pets);
		pets.add(67);
		System.out.println("after add(67):" + pets);
		pets.addLast(98);
		System.out.println("after addLast(98):" + pets);
		System.out.println("pets.removeLast():" + pets.removeLast());
	}
}
 
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
pets.getFirst():0
pets.element():0
pets.peek():0
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
pets.remove():0
pets.removeFirst():1
pets.poll():2
[3, 4, 5, 6, 7, 8, 9]
after addFirst(9):[9, 3, 4, 5, 6, 7, 8, 9]
after offer(34):[9, 3, 4, 5, 6, 7, 8, 9, 34]
after add(67):[9, 3, 4, 5, 6, 7, 8, 9, 34, 67]
after addLast(98):[9, 3, 4, 5, 6, 7, 8, 9, 34, 67, 98]
pets.removeLast():98