文章目录
- 一、什么是集合框架
- 二、Collection接口
-
- List集合
-
- ArrayList
- LinkedLsit
- vector
- Set集合
-
- HashSet
- LinkedHashSet
- TreeSet
- 三、Map接口
-
- HashMap
- LinkedHashMap
- TreeMap
一、什么是集合框架
Java集合框架是一组接口、实现类和算法,用于存和操作一组对象。它提供了一种方便的方式来处理集合数据,如列表、集合、队列,映射等,以及它们的实现。它是Java编程语言的核心部分之一,提供了高效的数据结构和算法,使开发人员可以更轻松地处理集合数据.Java集合框架包括以下几个主要组件: List、Set、Queue、Deque、Map和lterator。
集合的分支:
集合框架两大分支:Collection接口和Map接口
集合框架结构图
二、Collection接口
Collection集合主要有List和Set两大接口:
List:有序(元素存入集合的顺序和取出的顺序一致),元素都有索引。元素可以重复。
Set:无序(存入和取出顺序有可能不一致),不可以存储重复元素。必须保证元素唯一性。
List集合
List是元素有序并且可以重复的集合。
List的主要实现:ArrayList, LinkedList, Vector。
List常用方法
ArrayList
- 特点:存取有序、可重复、有索引
- 底层原理:是基于数组实现的
- 利用无参构造器创建的集合,会在底层创建一个默认长度为0的数组
- 添加第一个元素时,底层会创建一个新的长度为10的数组
- 存满时,会扩容1.5倍
- 使用场景:大量数据的查询、 少量数据的增删
LinkedLsit
- 数据结构:双链表 、查询慢、增删快
- LinkedList 不会出现扩容的问题,所以比较适合随机位置增、删。但是其基于链表实现,所以在定位时需要线性扫描,效率比较低。
vector
- vector是表示可变大小数组的序列容器。
- vector也采用的连续存储空间来存储元素。它的大小是可以动态改变的,而且-它的大小会被容器自动处理。
- vector会分配一些额外的空间以适应可能的增长,因为存储空间比实际需要的存储空间更大
- vector占用了更多的存储空间,为了获得管理存储空间的能力,并且以一种有效的方式动态增长。
- vector在访问元素的时候更加高效,在末尾添加和删除元素相对高效。
Set集合
特点: 无序:添加数据的顺序和获取出的数据顺序不一致并且没有重复对象。
Set的主要实现类:HashSet, TreeSet。
Set常用方法
HashSet
- 底层原理:基于哈希表实现。 哈希表是一种增删改查数据,性能都较好的数据结构。
- *哈希表存储元素的过程 根据hashCode值计算元素存放的位置 如果这个位置没有元素,直接存储 如果这个位置有元素调用equals比较 equals()为false,存储 equals()为true,不存储(认为是相同的元素) *
- 自定义元素除重复元素:重写对象的hashCode()和equals()方法。
LinkedHashSet
- 底层原理:依然是基于哈希表(数组、链表、红黑树)实现的。 但是,它的每个元素都额外的多了一个双链表的机制记录它前后元素的位置。
- 有序、不重复、无索引
TreeSet
特点:不重复、无索引、可排序(默认升序排序 ,按照元素的大小,由小到大排序) 底层是基于红黑树实现的排序。
三、Map接口
Map 是一种把键对象和值对象映射的集合,它的每一个元素都包含一对键对象和值对象。 Map没有继承于Collection接口,从Map集合中检索元素时,只要给出键对象,就会返回对应的值对象。
Map 的常用实现类:HashMap、TreeMap、HashTable、LinkedHashMap、ConcurrentHashMap
Map常用方法
HashMap
- Map接口基于哈希表的实现,是使用频率最高的用于键值对处理的数据类型。
- 特点:无序、不重复、无索引;
LinkedHashMap
- 特点:(由键决定特点): 有序、不重复、无索引。
- 底层原理:底层数据结构依然是基于哈希表实现的,只是每个键值对元素又额外的多了一个双链表的机制记录元素顺序(保证有序)。
TreeMap
- 特点:由键决定特点:按照键的大小默认升序排序、不重复、无索引。
- 由键决定特点:按照键的大小默认升序排序、不重复、无索引。
- TreeMap集合同样也支持两种方式来指定排序规则
- 让类实现Comparable接口,重写比较规则。
- TreeMap集合有一个有参数构造器,支持创建Comparator比较器对象,以便用来指定比较规则。
好啦,以上便是集合框架的所有内容。
⭐最后⭐
总结不易,希望小宝们不要吝啬你们的哟(^U^)ノ~YO!!
如有问题,欢迎评论区批评指正