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
- java集合框架之List------03_02 ArrayList Vector LinkedList
- java基础之集合List-ArrayList、LinkedList、Vector的区别
- Java集合框架之List---ArrayList与LinkedList源码分析
- 集合list、ArrayList、LinkedList、Vector
- Java集合之ArrayList,LinkedList,Vector
- JAVA集合之---LinkedList、ArrayList与Vector
- Java集合框架-1.【集合类】【Collection接口】【List】【ArrayList】【Vector】【LinkedList】
- 集合框架——List类(ArrayList、LinkedList、Vector)
- Java集合框架——List下ArrayList、Vector、LinkedList的简单分析
- Java集合ArrayList,Vector,LinkedList
- java 集合 Vector ArrayList LinkedList
- java基础(集合List-ArrayList、LinkedList、Vector的区别)
- java的List集合们ArrayList vs. LinkedList vs. Vector
- Java基础之集合List-ArrayList、LinkedList、Vector的底层实现和区别
- Java集合之三List接口及其实现类ArrayList、LinkedList、Vector
- Java集合框架里ArrayList Vector和LinkedList的区别
- List集合:Vector ArrayList LinkedList异同
- Java Collections Framework - Java集合框架之List篇 ArrayList与LinkedList等的性能比较
- 浪浪浪
- hihoCoder挑战赛14A题 1223
- ubuntu安装sumo
- android程序开发——事件分发机制
- React Native运行Android时提示要下载: gradle-2.4-all.zip 引发的一系列错误
- java集合框架之List------03_02 ArrayList Vector LinkedList
- 潇洒东坡
- SQL 之 别名
- java文件输入输出
- 第54课作业实战成功:用phpMyAdmin等数据库可视化软件操作MySQL,并且通过远程操作MySQL;
- 1003. Emergency
- spring简单入门示例
- centos6.5 搭建 mysql5.7.15
- 开博第一篇必须水!