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

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值