Java集合类(1)------List接口及其实现类

一. List接口简介

  List集合代表一个有序集合,集合中的每个元素都有其对应的顺序索引,List集合允许重复的元素,可以通过索引来获取指定位置的元素。List集合以插入顺序来维护元素的顺序。List接口的主要实现类:ArrayList,LinkedList,Vector,Stack。

二. 主要方法

    

  1)add(int index, E obj)方法可以将元素插入到index指定的索引位置。

  2)get()方法可以获取对应索引位置的元素。

  3)indexOf()方法可以返回集合中指定元素的第一次出现的索引。

  4)listIterator()方法可以返回一个迭代器。

三. 主要实现类

 3.1 ArrayList类

   ArrayList类扩展了AbstractList类并实现了List接口。ArrayList本质上是一个动态数组,初始化大小默认为10,它可以通过ensureCapacity()方法动态的增加或减小大小,在每次向容器中增加元素的同时都会进行容量检查,当快溢出时,就会进行扩容操作。所以如果我们明确所插入元素的多少,最好指定一个初始容量值,避免过多的进行扩容操作而浪费时间、效率。

  ArrayList擅长于随机访问。同时ArrayList是非同步的。

 3.2 LinkedList类

  LinkedList类实现了List,Deque以及Queue接口。LinkedList与ArrayList不同,ArrayList是一个动态数组,而LinkedList是一个双向链表

  由于实现的方式不同,LinkedList不能随机访问,它所有的操作都是要按照双重链表的需要执行。在列表中索引的操作将从开头或结尾遍历列表(从靠近指定索引的一端)。这样做的好处就是可以通过较低的代价在List中进行插入和删除操作。

  与ArrayList一样,LinkedList也是非同步的。如果多个线程同时访问一个List,则必须自己实现访问同步。一种解决方法是在创建List时构造一个同步的List

List list = Collections.synchronizedList(new LinkedList(...))

  由于LinkedList实现了Deque接口,因此可以使用addFirst()或offerFirst()方法向列表头部增加元素;通过addLast()或offerLast()向列表尾部增加元素;通过getFirst()或peekFirst()来获取第一个元素;通过getLast()或peekLast()来获取最后一个元素等。

 3.3 Vector类 

  Vector实现了动态数组,与ArrayList类似。但是Vector是同步的,并且包含了许多遗留方法。Vector容量初始化大小也是10。

  Vector可以通过迭代器,for-each风格,Enumeration接口来进行遍历。

 3.4 Stack类

  Stack继承自Vector类,实现了一个后进先出的堆栈。其中有几个基本方法:

  1)empty():如果堆栈为空,就返回true,否则返回false。

  2)peek():返回堆栈顶部的元素,但是不移除。

  3)pop():返回堆栈顶部的元素,移除。

  4)push():将元素压栈,并返回该元素。

  5)search():在堆栈中查找某元素,找到则返回这个元素到堆栈顶部的偏移值,否则返回-1。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值