泛型和容器(2)——List和迭代器

来源:互联网 发布:qq透明皮肤软件下载 编辑:程序博客网 时间:2024/05/15 12:56
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()); // 无返回值则返回nullSystem.out.println(pets);System.out.println("pets.remove():" + pets.remove());System.out.println("pets.removeFirst():" + pets.removeFirst());System.out.println("pets.poll():" + pets.poll()); // 无返回值则返回nullSystem.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():0pets.element():0pets.peek():0[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]pets.remove():0pets.removeFirst():1pets.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



0 0
原创粉丝点击