when to use:
当不知道程序运行时会需要多少对象,或者需要以更复杂的形式来储存对象时,可以使用java集合框架。(e.g. 假定学员数)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200603200238556.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NjI1NTgxNg==,size_16,color_FFFFFF,t_70)
-
接口(4个:Collection\ List\ Set \ Map)
: (1)Collection单值
: List : ArrayList\ LinkedList (子类实现)
: Set : HashSet \ TreeSet
: (2)Map : 键-值对形式(key-value)
: HashMap
: TreeMap
工具类Collections提供了对集合进行排序、遍历等多种算法实现
- 具体类
- 算法
- Vector(也是List接口的一个子类实现,数据结构也为数组)同ArrayList的区别:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200603200911354.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NjI1NTgxNg==,size_16,color_FFFFFF,t_70)
(1)![在这里插入图片描述](https://img-blog.csdnimg.cn/20200603202129743.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NjI1NTgxNg==,size_16,color_FFFFFF,t_70)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200603202226377.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NjI1NTgxNg==,size_16,color_FFFFFF,t_70)
(2)ArrayList线程不安全,但效率高;
JUC: java.util.concurrent —— 并发时用到
Collection接口:
子接口:
List(ArrayList,LinkedList,不唯一,有序),
Set(HashSet,TreeSet,唯一,无序,无get(),set()方法)
常用的api方法:
增 add(), addAll()
删 remove(), clear()(清空,不删除对象), removeAll()
改 set(index, element)
查 contains(), get(), subList(),ListIterator…
注意:每个方法来源于哪个父类
- ArrayList——
- LinkedList——
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200603211342369.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NjI1NTgxNg==,size_16,color_FFFFFF,t_70)
- HashSet——
- TreeSet——
迭代器:
Iterator:(不能边更改边遍历,并发操作错误,采用ListIterator可避免——通过cursor、lastRet=-1实现)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200603200434244.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NjI1NTgxNg==,size_16,color_FFFFFF,t_70)
Iterable: 接口。
增强for循环
(推荐,因while内的变量作用域为类,而for内的变量作用域仅循环内部)
比较器:
当存储某些元素的时候,需要对集合中的元素进行排序,此时需要比较器。
- 内部比较器:Comparable
- 外部比较器:Comparator (推荐)
泛型:
<K,E,V> // K_ key , E_elements , V_values
- 泛型类
- 泛型接口
- 泛型方法
- 泛型上下限(工作中使用较少,但看源码会经常看到,需理解)
数据结构:
ArrayList
数据结构为数组(遍历速度快,但删除、插入慢:前面/后面的对象需进行移位)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200603195928977.png)
LinkedList
数据结构为链表(单向列表,或双向列表,删除、插入快,但遍历慢)
(1)单向链表——(遍历需挨个往下)![在这里插入图片描述](https://img-blog.csdnimg.cn/20200603191609938.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NjI1NTgxNg==,size_16,color_FFFFFF,t_70)
(2)双向链表——可以从前往后也可以从后往前![在这里插入图片描述](https://img-blog.csdnimg.cn/20200603191824132.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NjI1NTgxNg==,size_16,color_FFFFFF,t_70)
哈希表:(链表+数组形式,头插法: 图片转载)
![哈希表](https://img-blog.csdnimg.cn/20200603185038938.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NjI1NTgxNg==,size_16,color_FFFFFF,t_70)
红黑树:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200603212137760.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NjI1NTgxNg==,size_16,color_FFFFFF,t_70)
个人理解:
查找多个数据时——引入倒置的
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)