2:列表(List)
特点:
(1):有序的(插入的顺序有序),元素有索引值。(2):同意反复。
set/get/listIterator/subList
ArrayList
特点:(1):底层数组方式实现。(2):元素是有序的。(是指加入进去的元素有序,不是指对象之间的顺序)
(3):不是线程同步的。(4):因为是用数组实现。查找比較快。
循环:
迭代器 For循环双向迭代器
LinkedList
特点:(1):底层机制链表方式实现。(2):元素是有序的。(是指加入进去的元素有序,不是指对象之间的顺序)(3):不是线程同步的。(4):因为是用链表实现。因此增删改对象比較easy。查找比較慢。
CopyOnWriteArrayList
特点:(1):底层机制数组方式实现。(2):元素是有序的。(是指加入进去的元素有序,不是指对象之间的顺序)(3):它是线程同步的。(4):因为是用数组实现。因此查找比較快。增删改比較慢。
List中的subList方法
subList也会出现高速失败异常。解决方法:又一次用subList截取的集合视图构建一个新的List就可以。List list = new ArrayList();List list2 = list.subList(3,5);list.removeAll(list2);List list = new ArrayList();List list2 = new ArrayList(list.subList(3,5));list.removeAll(list2);
Stack(数据结构)
3:映射(Map)(1):有序的(插入的顺序有序)。元素有索引值。(2):同意反复。(3):数据先进后出。
特点:
(1):键值对的数据对象。键不能反复。(键反复的话。后面加入的覆盖前面)一个键相应一个值。
HashMap
(1):底层以哈希算法实现(2):同意一个NULL键。同意多个NULL值。(3):无序(4):不是线程同步。
LinkedHashMap
(1):底层以链表算法实现(2):同意一个NULL键。同意多个NULL值。(3):有序(加入的顺序有序)(4):不是线程同步。
存值:put(key,value); 取值: value = get(key)
迭代Map
A:使用KeySet(返回全部键的集合,循环键的集合。取出每个键,再通过键取值)。 B:使用values(返回全部值的集合),仅仅能获取值(值能够反复,所以不能通过值获取键)C:使用entrySet(返回键值对的集合)。集合中的每个元素都是一个Map.entry实体对象。
4:队列(Queue)
特点:(1):与Stack一样,队列是一种数据结构。先进先出的特点。
加入:offer
删除:remove
获取队列元素 poll
单向队列:Queue queue = new LinkedList();
双向队列:LinkedList queue = new LinkedList(); //这样双向队列能够操作队首与队尾。5:老的一些集合框架类
特点:
全部都是线程安全的。
Vector
特点:(1):底层数组方式实现。 (2):元素是有序的。(是指加入进去的元素有序,不是指对象之间的顺序) (3):是线程同步的。 (4):因为是用数组实现,查找比較快。HashTable
(1):底层以哈希算法实现 (2):不同意NULL键,不同意NULL值。 (3):无序 (4):线程同步。Enumeration
老的迭代器。没有提供remove元素的方法。(因为老集合都是线程安全的).
集合的工具类:
Arrays:用于操作数组的工具类。集合之间的相互转换对于数组的排序。加入,查找。
Collections:用于操作集合的工具类。对于集合的排序,加入。查找,比較等。
数组转List 数组转SET List转数组 Set转数组 List转SET