Java 集合
原文: https://javabeginnerstutorial.com/core-java-tutorial/collection-in-java/
在 JDK 1.2 中添加了集合框架,并在 1.4 -1.6 中对其进行了扩展
集合框架的接口金额类
集合 API 提供了一组接口供您选择,但同时也为您提供了一些可直接使用的具体类。
核心接口
CollectionListSetSortedSet(扩展Set接口)NavigableSet(扩展SortedSet)
MapSortedMap(扩展Map接口)NavigableMap(扩展SortedMap)
Queue
实现类
1 Map
HashMapHashTableTreeMapLinkedHashMap
2 Set
HashSetLinkedHashSetTreeSet
3 List
ArrayListVectorLinkedList
4 Queue
AbstractQueueArrayBlockingQueueConcurrentLinkedQueueDelayQueueLinkedBlockingDequeLinkedBlockingQueueLinkedTransferQueuePriorityBlockingQueuePriorityQueueSyncronizedQueue
5 Deque
ArrayDequeConcurrentLinkedDeque
6 数组
并非集合框架中的所有类都实现
Collection接口。没有与
Map相关的类&接口从Collection扩展。
集合也可以基于排序和排序进行划分。
1 - 有序集合
有序集合可以以特定顺序(非随机)进行迭代。 例如:数组,哈希表
LinkedHashSet(迭代顺序是可预测的)- 数组
HashTableArrayList
2 – 无序集合
HashSet
3 - 排序的集合
在排序的集合中,集合的顺序是根据某些规则确定的。 例如List
List接口
属性:
关注索引
具有与索引(indexOf ..)相关的方法
按索引位置排序
ArrayList
语法
List l = new ArrayList<E>();
属性:
- 可增长数组
- 快速迭代
- 快速随机访问
- 按索引排序
Vector
与ArrayList相同,但Vector中的方法是同步的。
LinkedList
属性
- 元素彼此双重链接。
- 按索引位置排序
- 适用于实现栈和队列
- 快速插入和删除
Set接口
设置用于考虑对象唯一性的情况。 不允许重复的对象。 若要确定两个对象是否相等,Set使用equals()和hashcode()方法。
HashSet
属性
- 无序
- 使用对象的哈希码
- 没有重复的对象
LinkedHashMap
- 有序(插入)
- 使用对象的哈希码
- 没有重复的对象
TreeSet
- 排序(使用树形结构)
- 使用对象的哈希码
- 没有重复的对象
——————————————————————————————
并发集合接口
BlockingQueue扩展了QueueTransferQueue扩展了BlockingQueueBlockingDeque扩展了BlockingQueueConcurrentMap扩展了Map
并发集合实现
LinkedBlockingQueue扩展了AbstractQueue实现了BlockingQueueArrayBlockingQueue扩展了AbstractQueue实现了BlockingQueuePriorityBlockingQueue扩展了AbstractQueue实现了BlockingQueueDelayQueue扩展了AbstractQueue实现了BlockingQueueSynchronousQueue扩展了AbstractQueue实现了BlockingQueueLinkedBlockingDeque扩展了AbstractQueue实现了BlockingDequeLinkedTransferQueue扩展了AbstractQueue实现了TransferQueueCopyOnWriteArrayList实现List,RandomAccessCopyOnWriteArraySet扩展AbstractSetConcurrentSkipListSet扩展了AbstractSet实现了NavigableSetConcurrentHashMap扩展了AbstractMap实现了ConcurrentMapConcurrentSkipListMap扩展了AbstractMap实现了ConcurrentNavigableMap
可能有助于决定集合类的因素
为特定问题选择适当的集合时,可以考虑多种因素。 这些因素是:
- 排序 - 元素中的某种排序。 例如,排序顺序,插入顺序或没有特定顺序。
- 重复项 - 可能或可能不想在集合中允许重复的元素。
- 线程安全 - 如果有多个线程访问集合,请确保集合中元素的安全。
- 键值对 - 存储在键值对中。
- 阻塞操作 - 检索元素时等待集合变为非空。
- 随机访问 - 即时检索元素。
- 上限 - 要限制集合可以容纳的最大元素数。
还有其他因素,例如优先级,延迟等。
备忘单
- 集合是存储对象的数据结构。
- 可以添加,删除对象,也可以在集合中对其进行遍历。
- 基本集合有 4 种类型
- 列表: 有序,允许重复,已索引。
- 集:可以有序或可以无序。 不允许复制。
- 映射:不允许使用重复的键。
- 队列:按 FIFO 或优先级进行排序。
ArrayList:快速迭代&快速随机访问。Vector:同步方法。LinkedList:适用于实现栈和队列。HashSet:快速访问,没有重复,没有排序。LinkedHashSet:没有重复,按插入顺序进行迭代。TreeSet:无重复,按排序顺序进行迭代。
