参考菜鸟教程
Java 集合框架 | 菜鸟教程 (runoob.com)
java集合框架分为两类:
1.collection:存储的元素是单个的
2.map:存储的元素是键值对
这两个被称作根接口。
collection有三个子接口,List、Set、Queue。再往下是一些抽象类,最后是具体实现类,常用的有 ArrayList、LinkedList、HashSet、LinkedHashSet、HashMap、LinkedHashMap 等等。
java集合框架中的接口:
1.Collection: 存储一组不唯一(元素可重复)、无序的对象。
2.List :存储一组不唯一(元素可重复)、有序(按插入顺序,也因此可通过索引来访问其中元素)的对象。
3.Set:存储一组唯一(元素不可重复),无序的对象。
4.SortedSet:继承于Set保存有序的集合。
5.Map:存储一组键值对象,提供key(键)到value(值)的映射。
6.SortedMap:继承于 Map,使 Key 保持在升序排列。
java集合框架中的标准集合类:
Java提供了一套实现了Collection接口的标准集合类。其中一些是具体类,这些类可以直接拿来使用,而另外一些是抽象类,提供了接口的部分实现。
1.LinkedList
1)允许有null(空)元素。主要用于创建链表数据结构,该类没有同步方法,如果多个线程同时访问一个List,则必须自己实现访问同步,解决方法就是在创建List时候构造一个同步的List。例如:
List list=Collections.synchronizedList(newLinkedList(...));
2)LinkedList 查找效率低。与 ArrayList 相比,LinkedList 的增加和删除的操作效率更高,而查找和修改的操作效率较低。(结合 Linked---链表, Array---数组)
以下情况使用 ArrayList :
- 频繁访问列表中的某一个元素。
- 只需要在列表末尾进行添加和删除元素操作。
以下情况使用 LinkedList :
- 你需要通过循环迭代来访问列表中的某些元素。
- 需要频繁的在列表开头、中间、末尾等位置进行添加和删除元素操作
3)LinkedList 实现了 Queue 接口,可作为"栈"使用。
LinkedList 实现了 List 接口,可进行列表的相关操作。
LinkedList 实现了 Deque 接口,可作为队列使用。
LinkedList 实现了 Cloneable 接口,可实现克隆。
LinkedList 实现了 java.io.Serializable 接口,即可支持序列化,能通过序列化去传输。
4)操作:
- 迭代元素: for 配合 size() 方法 / for-each
- 其余常见方法可参考Java LinkedList | 菜鸟教程 (runoob.com)
2.ArrayList
1)实现了可变大小的数组,随机访问和遍历元素时,提供更好的性能。该类也是非同步的,在多线程的情况下不要使用。ArrayList 增长当前长度的50%,插入删除效率低。
2)Vector与ArrayList相似,但是Vector是同步的,它的操作与ArrayList几乎一样。
3)操作:add() | get() | set() | size() | remove() | sort()
Java ArrayList | 菜鸟教程 (runoob.com)
3.HashSet
1)不允许出现重复元素,元素无序,允许包含值为null的元素,但最多只能一个。HashSet 不是线程安全的。
2)操作:add() | remove() | clear() | size() | contains()
Java HashSet | 菜鸟教程 (runoob.com)
4.HashMap
1)HashMap 是一个散列表,它存储的内容是键值对(key-value)映射。
根据键的HashCode值存储数据,具有很快的访问速度,最多允许一条记录的键为null,不支持线程同步。HashMap 是无序的。
2)操作:put(key, value) | value = get(key) | remove(key) | size() | clear() | keySet() | values()
Java HashMap | 菜鸟教程 (runoob.com)