Java讲义笔记(七)——List集合、Queue集合

一、List集合简介

List集合接口属于Collection接口的一个子接口,其实现类有LinkedList、ArrayList、Vector、Stack。List集合的特点是存储的元素是无序的、允许重复的。

二、ArrayList和Vector实现类

 
  这两个实现类的底层都是基于数组实现的,所以他们实际上是封装了一个动态的、可再分配的数组。在构造ArrayList和Vector对象时,我们可以指定initialCapacity参数来设置该数组的长度,当我们向List中添加对象超过初始分配的空间时,系统会重新为我们开辟一段空间然后将原有集合中对象的存储地址转移到新的地址,显然这种操作是十分耗费性能的,在实际生产中我们应该尽可能地减少重分配次数。
  如果在开始时就知道要存储多少元素,最好在创建List或Vector时指定initialCapacity。在一次增加大量元素时可以事先调用void ensureCapacity(int minCapacity)方法一次性增加大于等于minCapacity的空间。
 ArrayList和Vector的区别:
  Vector相比ArrayList是一个更古老的集合,他们之间最显著的区别便是Vector是线程安全的,而ArrayList则不是,因此Vector的性能要远低于ArrayList。Vector还有一个子类——Stack,这个栈结构同样也是线程安全、性能差,在实际开发中尽量避免使用Stack,如若使用栈结构可以考虑Queue集合中的ArrayDeque.
 Arrays.asList() 方法返回的List对象是长度不可变的,只可访问不能增加或删除。

三、Queue集合

 
  Queue接口下有PriorityQueue实现类,同时又派生出子接口Deque,Deque接口实际上是双端队列的接口,该接口的实现类有ArrayDeque、LinkedList。
  ArrayDeque可以当作双端队列使用也可以当作栈使用,这个类提供了这两种数据结构的基本操作方法。与ArrayList相同,他也是基于数组实现的,当超过初始的分配空间(初始默认为16)时,系统会重新分配空间进行存储。
  LinkedList既实现了List接口也实现了Deque接口,所以它可以当集合用、也可以当双端队列用、也可以当栈用。该类的实现是基于链表的形式,此集合在插入、删除元素时有良好的性能。
  所有基于数组实现的集合在随机访问方面有着良好的性能,在遍历时可以采用for循环的方式,对于基于链表实现的集合可以采用Iterator的方式进行遍历。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值