目录
Java集合
- 1.前言
- 2.集合
- 3.Collection接口类
- 3.1 List接口
- 3.1.1 ArrayList(常用)
- 3.1.2 LinkedList(常用)
- 3.1.3 Vector(不常用)
- 3.2 Set接口
- 3.2.1 HashSet(常用)
- 3.2.2 LinkedHashSet(不常用)
- 3.2.3 TreeSet(常用)
- 3.3 Queue接口
- 4.Map接口类
- 4.1 HashMap接口
- 4.2 LinkedHashMap接口
- 4.3 TreeMap接口
- 5.总结
- 参考
文章所属专区 超链接
1.前言
Java集合是Java语言中用于存储、组织数据的一组工具,它们可以帮助我们更有效地进行编程。Java集合大致可以分为以下四种类型:
List:有序集合,可以存储重复的元素3。常见的实现有ArrayList和LinkedList3。
Set:无序集合,只能存储一次,不能重复元素3。常见的实现有HashSet、LinkedHashSet和TreeSet3。
Map:键值对(key-value)的集合,键不能重复,值可以重复3。常见的实现有HashMap、LinkedHashMap和TreeMap。
Queue:先进行元素添加,后进行元素删除的队列4。常见的实现有PriorityQueue和LinkedList4。
2.集合
集合也叫容器,主要由两大类派生,一类是操作单个元素的Collection接口,另外一类是操作键值对的Map接口。其中Collection包含了List , Set ,Queue
3.Collection接口类
3.1 List接口
有序集合,可存储有序的可重复的元素。
3.1.1 ArrayList(常用)
底层数据结构是数组,查询快,增删慢,线程不安全,效率高。
3.1.2 LinkedList(常用)
底层数据结构是链表,查询慢,增删快,线程不安全,效率高。
3.1.3 Vector(不常用)
底层数据结构是数组,查询快,增删慢,线程安全,效率低。
3.2 Set接口
无序集合,存储无序的不可重复的元素。
3.2.1 HashSet(常用)
底层数据结构是哈希表(数组),元素无序且唯一(是否重写hashCode()和equals()方法来保证的)线程不安全,效率高。
具体实现唯一性的比较过程:存储元素首先会使用hash()算法函数生成一个int类型hashCode散列值,然后已经的所存储的元素的hashCode值比较,如果hashCode不相等,则所存储的两个对象一定不相等,此时存储当前的新的hashCode值处的元素对象;如果hashCode相等,存储元素的对象还是不一定相等,此时会调用equals()方法判断两个对象的内容是否相等,如果内容相等,那么就是同一个对象,无需存储;如果比较的内容不相等,那么就是不同的对象,就该存储了,此时就要采用哈希的解决地址冲突算法,在当前hashCode值处类似一个新的链表, 在同一个hashCode值的后面存储存储不同的对象,这样就保证了元素的唯一性。
Set的实现类的集合对象中不能够有重复元素,HashSet也一样他是使用了一种标识来确定元素的不重复,HashSet用一种算法来保证HashSet中的元素是不重复的, HashSet采用哈希算法,底层用数组存储数据。默认初始化容量16,加载因子0.75。
Object类中的hashCode()的方法是所有子类都会继承这个方法,这个方法会用Hash算法算出一个Hash(哈希)码值返回,HashSet会用Hash码值去和数组长度取模, 模(这个模就是对象要存放在数组中的位置)相同时才会判断数组中的元素和要加入的对象的内容是否相同,如果不同才会添加进去。
3.2.2 LinkedHashSet(不常用)
底层数据结构是链表和哈希表,链表保证了元素的顺序与存储顺序一致,哈希表保证了元素的唯一性,线程不安全,效率高。
3.2.3 TreeSet(常用)
底层数据结构是二叉树,元素有序且唯一,唯一性同样需要重写hashCode和equals()方法,二叉树结构保证了元素的有序性。
3.3 Queue接口
有序集合,存储有序的可重复的元素。
4.Map接口类
键值对(key-value)的集合,键不能重复,值可以重复。
4.1 HashMap接口
4.2 LinkedHashMap接口
4.3 TreeMap接口
5.总结
数据结构
ArrayXxx:底层数据结构是数组,查询快,增删慢
LinkedXxx:底层数据结构是链表,查询慢,增删快
HashXxx:底层数据结构是哈希表。依赖两个方法:hashCode()和equals()
TreeXxx:底层数据结构是二叉树。两种方式排序:自然排序和比较器排序
参考
Java集合常见面试题总结
菜鸟教程-集合
java集合超详解
java集合对比汇总
给个三连吧 谢谢谢谢谢谢了