简介:
1.Java集合类 是Java.util包中的重要内容,它允许以各种方式将元素进行分组,并定义了各种使这些元素更容易操作的方法。
2.Java集合类 是Java将一些基本的和使用频率极高的基础类进行封装和增强,再以一个类的形式提供。
3.集合类是Java数据结构的实现
4.集合类 是可以往里面保存多个对象的类,存放的是对象的引用,每个不同的集合类都有不同的功能和特点,适合不同的场合,用来解决一些实际的问题。
集合四类:
1.List 列表 (元素有序且可重复):
.鉴于 Java 数组储存数据的局限性,我们通常用list来取代数组.
.list 容器中的元素都对应一个正整型的序号,记载其在容器中的位置,可以通过序号存取容器中的元素
1.Array List (是有序,可重复的):
ArrayList 数组列表,它的内部是通过Array实现,在对数组列表进行插入,删除的操作时,都需要对数组进行拷贝并重排序,同时在知道它的储存容量时,尽量初始化初始容量,提升性能。
优点:
1. 支持自由改变大小
2.可以灵活的插入删除元素
缺点:
1.比普通的数组速度慢一些
2.LinkedList:
LinkedList 双向链表 里面的元素都有着指向前后元素的指针,顺序读取效率较高,随机读取效率较低。
LinkedList也实现了Dqueue接口 ,所以也可以被当作双端队列使用。
如何实现LinkedList:
LinkedList 的底层双向链表,而链表的底层是一个个节点通过游标进行连接 的,因此我们要做的是创造节点,然后储存的时候通过游标将一个个节点进行连接起来就行了。
3.Vector:
vector向量和ArrayList一样都是通过数组实现,不同的是,vector线程安全,但线程安全的同时带来了性能损耗。
4.Stack:
Stack栈容器是Vecotr容器的一个子类,栈是一种后进先出的线性数据结构,是一种特殊的线性表。
5.ArrayQueue:
ArrayQueue数组队列 先进先出。
2.Queue队列:
1.PriorityQueue:
PriorityQueue本质上也是一个动态数组,和ArrayList一样。
PriorityQueue保存队列的元素顺序,不是按加入队列的顺序,而是按照队列元素的大小进行重新排序。
数组实现的二叉树,完全二叉树实现的小顶堆。
2.Dqueue:
Dqueue接口是Queue接口的子接口,它代表一个双端队列。
Dqueue不仅可以当双端队列使用,还可以被当成Stack使用。
Dqueue和Queue、Stack的关系:
Dqueue当作Stack使用时,入栈、出栈元素都是在双端队列头部进行。
Dqueue当作Queue使用时,添加元素时会添加到队尾,删除时,删除的是头部元素。
注意: Stack 过于古老,并且实现的非常不好,可以只用Dqueue代替Stack。
3.ArrayDqueue:
ArrayDqueue 为了满足同时在数组两端进行插入、删除元素的要求,其内部动态数组必须是循环的,即循环数组。
ArrayDqueue 由于是双端队列,所以其顺序是按照元素插入数组中对应的位置产生的。
3.Map映射 /字典:
- HashMap哈希映射/字典,无序字典,键值对数据,key是唯一的,Key和Value都可以为null
- TreeMap红黑树实现的key->value融合,可排序,红黑树是一种自平衡二叉查找树。
- LinkedHashMap链表映射/字典,继承了hashmap的所有特性,同时又实现了双向链表的特性,保留了元素插入顺序。
4.Set集合:
- HashSet基于HashMap实现的集合,对HashMap做了一些封装。与HaspMap不同的是元素的保存为链表形式,插入数据时遍历链表查看是否有相同数据,有则返回false,没有则返回true.
- LinkedHashSet链表集合,继承自HashSet与LinkedHashMap相似,是对LinkedHashMap的封装。
- TreeSet红黑树集合,与TreeMap相似,是对TreeMap的封装。
szxyxfssyxyszxt
syszszsyxyss