java集合框架之List------03_02 ArrayList Vector LinkedList

来源:互联网 发布:csdn 脉内分析算法 编辑:程序博客网 时间:2024/04/28 13:45
Vector和ArrayList是List的两个典型的实现,底层都是基于一个动态的,允许再分配的Object数组。数组默认长度为10。可以使用ensureCapacity()方法来增加数组长度。详见java API。
Vector是线程安全的,无序程序保证该集合的同步性,而ArrayList是线程不安全的,必须在程序中保证集合的同步性。Vector的效率相对较低。一般不会使用Vector了。

Vector有一个子类Stack,用来模拟栈(LIFO),主要由以下几个关键的方法:
    peek()   返回栈的第一个元素,但是该元素不出栈
    pop() 返回栈的第一个元素,该元素出栈

    push(Object item) 将一个元素压入栈

public class VectorDemo {    public static void main(String[] args){        Stack s=  new Stack();        s.push("a");        s.push("b");        s.push("c");        System.out.println(s);        System.out.println("the first element of the stack is:"+s.peek());        System.out.println(s);        System.out.println(s.pop());        System.out.println("the content of the stack after pop:"+s);    }}  

输出:
[a, b, c]
the first element of the stack is:c
[a, b, c]
c
the content of the stack after pop:[a, b]  
由于Stack是Vector的子类, 所以效率比较低。如果要模拟栈,可以使用LinkedList来进行模拟。
LinkedList实现了Deque接口,可以被当做双端队列使用,也可以被当做栈来使用。
需要记住的几个重要方法:
addFirst(Object e)  offerFirst(Object e) 将指定元素插入到双端队列的开头
addLast(Object e)  offerLast(Object e)将指定元素插入到双端队列末尾
getFirst() peekFirst() 获取但不删除双端队列的第一个元素
getLast() peekLast() 获取但不删除双端队列的最后一个元素
pollFirst()获取并删除第一个元素
pollLast() 获取并删除最后一个元素
pop()   删除栈的第一个元素
push()将一个元素添加到栈顶。


下面通过一个例子来说明:
public class LinkedListDemo {    public static void main(String[] args){        LinkedList ll = new LinkedList();        ll.offer("a");        ll.push("b");        ll.offerFirst("c");        for(int i=0; i<ll.size(); i++){            System.out.println(ll.get(i));        }        System.out.println(ll);        System.out.println("访问但不删除栈的第一个元素:"+ll.peekFirst());        System.out.println("访问但不删除栈的最后一个元素"+ll.peekLast());        System.out.println("弹出栈顶元素"+ll.pop());        System.out.println("栈内内容为:"+ll);        System.out.println("弹出栈的最后一个元素"+ll.pollLast());        System.out.println("栈内内容为:"+ll);    }}  
输出结果为:
c
b
a
[c, b, a]
访问但不删除栈的第一个元素:c
访问但不删除栈的最后一个元素a
弹出栈顶元素c
栈内内容为:[b, a]
弹出栈的最后一个元素a
栈内内容为:[b]  



0 0
原创粉丝点击