Java集合框架是什么?
Java中的集合框架指的是一组接口、类和算法,用于存储和操作一组对象。这些对象可以是基本类型、自定义类型或其他Java对象
集合框架提供了更加高效、灵活和功能丰富的数据结构,而不限于数组或其他简单的数据结构。通过使用Java的集合框架,可以大大提高代码的可读性、可维护性和可扩展性
集合框架主要分为三个部分:Collection接口、Map接口和其他集合类
Java集合框架图
集合接口
集合框架定义了一些接口。本节提供了每个接口的概述:
Collection接口
Collection 是最基本的集合接口,一个 Collection 代表一组 Object,即 Collection 的元素, Java不提供直接继承自Collection的类,只提供继承于的子接口(如List和set)。
Collection 接口存储一组不唯一,无序的对象。
list接口
List接口是一个有序的 Collection,使用此接口能够精确的控制每个元素插入的位置,能够通过索引(元素在List中位置,类似于数组的下标)来访问List中的元素,第一个元素的索引为 0,而且允许有相同的元素。
List 接口存储一组不唯一,有序(插入顺序)的对象。
Set List 接口
List接口是一个有序的 Collection,使用此接口能够精确的控制每个元素插入的位置,能够通过索引(元素在List中位置,类似于数组的下标)来访问List中的元素,第一个元素的索引为 0,而且允许有相同的元素。
List 接口存储一组不唯一,有序(插入顺序)的对象。
Map Map 接口存储一组键值对象,提供key(键)到value(值)的映射。
SortedMap 继承于 Map,使 Key 保持在升序排列。
Collection集合适用场景分析
Collection集合Set和List的区别
List 接口:元素按进入先后有序保存,有序,可重复
LinkedList 接口实现类, 链表, 插入删除, 没有同步, 线程不安全
ArrayList 接口实现类, 数组, 随机访问, 没有同步, 线程不安全
Vector 接口实现类 数组, 同步, 线程安全
Set 接口: 仅接收一次,无序,不可重复,并做内部排序
HashSet 使用hash表(数组)存储元素
LinkedHashSet 链表维护元素的插入次序
TreeSet 底层实现为二叉树,元素排好序
常用方法
方法名 描述
public boolean add(E e) 把给定的对象添加到当前集合中
public void clear() 清空集合中所有的元素
public boolean remove(E e) 把给定的对象在当前集合中删除
public boolean contains(Object obj)
判断当前集合中是否包含给定的对象
public boolean isEmpty() 判断当前集合是否为空
public int size() 返回集合中元素的个数。
Map 接口 键值对的集合 (双列集合)
Hashtable 接口实现类, 同步, 线程安全
HashMap 接口实现类 ,没有同步, 线程不安全
LinkedHashMap 有序
List集合
概念:List集合因为支持索引,所以多了很多与索引相关的方法,当然,Collection的功能List也都继承了。
方法名 描述
void add(int index,E element) 在此集合中的指定位置插入指定的元素
E remove(int index) 删除指定索引处的元素,返回被删除的元素
E set(int index,E element) 修改指定索引处的元素,返回被修改的元素
E get(int index)
返回指定索引处的元素
ArrayList
特点:存取有序、可重复、有索引
底层原理:是基于数组实现的
利用无参构造器创建的集合,会在底层创建一个默认长度为0的数组
添加第一个元素时,底层会创建一个新的长度为10的数组
存满时,会扩容1.5倍
使用场景:大量数据的查询、 少量数据的增删
LinkedLsit
数据结构:双链表 、查询慢、增删快
Set集合
特点: 无序:添加数据的顺序和获取出的数据顺序不一致;
HashSet
底层原理:基于哈希表实现。 哈希表是一种增删改查数据,性能都较好的数据结构。
哈希表 JDK8之前,哈希表 = 数组+链表
LinkedHashSet
LinkedHashSet 是 HashSet的子类
LinkedHashSet底层是一个LinkedHashMap,底层维护了一个数组+双向链表
LinkedHashSet 不允许添重复元素
TreeSet
特点:不重复、无索引、可排序(默认升序排序 ,按照元素的大小,由小到大排序) 底层是基于红黑树实现的排序
三、Map
Map是双列集合的祖宗,它的功能是全部双列集合都可以继承过来使用的。
根据键值对进行存储。
HashMap
特点:无序、不重复、无索引;
哈希表 JDK8之前,哈希表 = 数组+链表
JDK8开始,哈希表 = 数组+链表+红黑树 哈希表是一种增删改查数据,性能都较好的数据结构。
LinkedHashMap
特点:(由键决定特点): 有序、不重复、无索引。
底层原理:底层数据结构依然是基于哈希表实现的,只是每个键值对元素又额外的多了一个双链表的机制记录元素顺序(保证有序)。
TreeMap
特点:由键决定特点:按照键的大小默认升序排序、不重复、无索引。
由键决定特点:按照键的大小默认升序排序、不重复、无索引。
TreeMap集合同样也支持两种方式来指定排序规则
让类实现Comparable接口,重写比较规则。
TreeMap集合有一个有参数构造器,支持创建Comparator比较器对象,以便用来指定比较规则。
总结不易,给个小攒攒吧~
————————————————
版权声明:本文为CSDN博主「天降伊利大王」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/liyil66464/article/details/134720236