Java核心技术-集合-Collection接口

Collection接口

一、Collection接口概述

java的集合类主要由两个接口派生而出:Collection和Map,Collection和Map是Java集合类的根接口。这两个接口又包含了一些子接口和派生类。

1、Map接口和Collection接口下的区别

1.1、Collection接口是一次只存一个元素的单列接口。统一定义了一套单列集合的接口
1.2、Map接口一次存一对元素,是双列接口,Map储存的元素:键和值;键(key)和值(value)之间是映射关系。

单列集合继承关系图
Java核心技术-集合-Collection接口_第1张图片

Collection集合下主要有两大接口:

  • List:有序集合接口(元素存入集合和取出的顺序一致),元素都有索引(Index),元素可重复,使用数组或链表结构进行储存
  • Set:无序集合接口(元素存入集合和取出的顺序可能不一致)。元素不可重复,必须保证元素的唯一性

二、List

1、List的主要实现类:ArrayList,LinkedList,vector
2、List元素是有序且元素可重复的

1、List中的常用方法

Java核心技术-集合-Collection接口_第2张图片

2、ArrayList,LinkedList,Vector的区别

. ArrayList LinkedList Vector
底层实现 数组 双向链表 数组
同步性及效率 不同步,非线程安全,效率高,支持随机访问 不同步,非线程安全,效率高 同步,线程安全,效率低
特点 查询快,增删慢 查询慢,增删快 查询快,增删慢
默认容量 10 / 10
扩容机制 int newCapacity = oldCapacity + (oldCapacity >> 1); / 2倍

3、ArrayList

4、LinkedList

5、Vector

总结:

  • 这三者都实现了List接口,使用方式也很相似,主要区别在于实现方式的不同,所以对不同的操作具有不同的效率
  • ArrayList和vector底层都采用了数组方式来储存元素,增删慢:是插入时会导致当前插入角标后的所有元素整体向后移动,删除时会导致当前删除角标后的所有元素整体向前移动,查询快:因为底层用的是数组,数组的访问实际上是对地址的访问,所以快
  • Vectorr下的方法由于使用了synchronized修饰-线程安全,所以性能相较于ArrayList更慢
  • LinkedList使用双向链表储存数据,查询慢:双向链表的查询逻辑是他会根据index的大小判断是从前遍历还是从后遍历,也就是说在查询过程中指针会一次次的移动直到获取index的值。增删快:只需要修改插入或删除数据左右的引用目标即可

三、Set

1、Set的主要实现类:HashSet,TreeSet
2、Set元素通常是无序的,且元素不可重复

你可能感兴趣的:(java,链表,开发语言)