Java容器精华之Collection接口

Collection接口

Collection 表示一组对象,它是集中、收集的意思。Collection接口的两个子接口是List、Set接口。
在这里插入图片描述
List特点和常用方法
List是有序可重复的容器。在这里插入图片描述
List接口常用的实现类有3个:ArrayList、LinkedListVector
ArrayList特点
ArrayList底层是用Object数组实现的存储。 特点:查询效率高,增删效率低,线程不安全。我们一般使用它。(这个类是大致相当于Vector,不同之处在于它是线程不同步的)。
ArrayList的Object数组初始化长度为10,如果我们存储满了这个数组,需要存储第11个对象,就会定义新的长度更大的数组,并将原数组内容和新的元素一起加入到新数组中,源码如下:
在这里插入图片描述
LinkedList特点

LinkedList底层用双向链表实现的存储。特点:查询效率低,增删效率高,线程不安全。
LinkedList的存储结构图
Vector向量
Vector底层是用数组实现的List,相关的方法都加了同步检查,因此“线程安全,效率低”。该类和ArrayList非常相似,但是该类是同步的,可以用在多线程的情况,该类允许设置默认的增长长度,默认扩容方式为原来的2倍。

建议:何选用ArrayList、LinkedList、Vector?

  1. 需要线程安全时,用Vector。
  2. 不存在线程安全问题时,并且查找较多用ArrayList(一般使用它)。
  3. 不存在线程安全问题时,增加或删除元素较多用LinkedList。

Collections工具类
类 java.util.Collections 提供了对Set、List、Map进行排序、填充、查找元素的辅助方法。

  1. void sort(List) //对List容器内的元素排序,排序的规则是按照升序进行排序。
  2. void shuffle(List) //对List容器内的元素进行随机排列。
  3. void reverse(List) //对List容器内的元素进行逆续排列 。
  4. void fill(List, Object) //用一个特定的对象重写整个List容器。
  5. int binarySearch(List, Object)//对于顺序的List容器,采用折半查找的方法查找特定对象。

Java自学网站

猜你喜欢

转载自blog.csdn.net/weixin_46083166/article/details/105435987