when to use:
当不知道程序运行时会需要多少对象,或者需要以更复杂的形式来储存对象时,可以使用java集合框架。(e.g. 假定学员数)
-
接口(4个:Collection\ List\ Set \ Map)
: (1)Collection单值
: List : ArrayList\ LinkedList (子类实现)
: Set : HashSet \ TreeSet
: (2)Map : 键-值对形式(key-value)
: HashMap
: TreeMap
工具类Collections提供了对集合进行排序、遍历等多种算法实现
- 具体类
- 算法
- Vector(也是List接口的一个子类实现,数据结构也为数组)同ArrayList的区别:
(1)
(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——
- HashSet——
- TreeSet——
迭代器:
Iterator:(不能边更改边遍历,并发操作错误,采用ListIterator可避免——通过cursor、lastRet=-1实现)
Iterable: 接口。
增强for循环
(推荐,因while内的变量作用域为类,而for内的变量作用域仅循环内部)
比较器:
当存储某些元素的时候,需要对集合中的元素进行排序,此时需要比较器。
- 内部比较器:Comparable
- 外部比较器:Comparator (推荐)
泛型:
<K,E,V> // K_ key , E_elements , V_values
- 泛型类
- 泛型接口
- 泛型方法
- 泛型上下限(工作中使用较少,但看源码会经常看到,需理解)
数据结构:
ArrayList
数据结构为数组(遍历速度快,但删除、插入慢:前面/后面的对象需进行移位)
LinkedList
数据结构为链表(单向列表,或双向列表,删除、插入快,但遍历慢)
(1)单向链表——(遍历需挨个往下)
(2)双向链表——可以从前往后也可以从后往前
哈希表:(链表+数组形式,头插法: 图片转载)
红黑树:
个人理解:
查找多个数据时——引入倒置的
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)