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

Collection接口

一、Collection接口概述

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

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

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

单列集合继承关系图
在这里插入图片描述

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

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

二、List

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

1、List中的常用方法

在这里插入图片描述

2、ArrayList,LinkedList,Vector的区别

.ArrayListLinkedListVector
底层实现数组双向链表数组
同步性及效率不同步,非线程安全,效率高,支持随机访问不同步,非线程安全,效率高同步,线程安全,效率低
特点查询快,增删慢查询慢,增删快查询快,增删慢
默认容量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元素通常是无序的,且元素不可重复

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值