集合效率不完全皮恩车
需积分: 0 123 浏览量
更新于2009-03-07
收藏 74KB DOC 举报
以循环1000000万次为标准!
定义如下数组
public static char[] chars = {'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q'} ;
比较对象
List接口
AttributeList , ArrayList , CopyOnWriteArrayList , LinkedList
RoleList , RoleUnresolvedList , Stack Vector
Set接口
ConcurrentSkipListSet , CopyOnWriteArraySet , EnumSet…, HashSet
JobStateReasons , LinkedHashSet , TreeSet
Map接口
…….
在Java编程语言中,集合框架是处理数据的重要组成部分。这里我们关注的是集合的效率,特别是针对不同实现的List、Set接口以及Map接口的性能对比。通过对数组`chars`进行1000000万次操作,我们可以评估各种集合类在插入、哈希计算、散列、批量操作、删除、大小查询、位置查找、迭代和存在性检查等方面的性能。
我们来看List接口的实现:
1. **ArrayList**:基于动态数组实现,对于随机访问高效,但插入和删除元素时需要移动元素,效率较低。在测试中,其插入性能表现为A1723280328,这表明其在大量操作下表现稳定。
2. **CopyOnWriteArrayList**:适用于读多写少的情况,内部使用数组,并在修改时复制原数组创建新数组,避免并发修改异常。它的性能表现为Y500007800,表明在写入操作较多时,性能下降明显。
3. **LinkedList**:双向链表实现,对于插入和删除操作效率较高,但在随机访问时性能较差。在测试中,插入性能为Y70310160,这反映了其在链式结构的优势。
4. **RoleList** 和 **RoleUnresolvedList**:它们在实际应用中可能有特定用途,但在这里没有提供具体实现细节,无法进一步分析。
5. **Stack**:基于Vector实现,用于后进先出(LIFO)操作,插入性能为Y1722190391,表明其在栈操作上具有一定的效率。
6. **Vector**:线程安全的ArrayList,但由于每次操作都需要同步,性能通常低于ArrayList。测试结果为Y1722340,表明其性能相对较低。
接着,我们考察Set接口的实现:
1. **ConcurrentSkipListSet**:线程安全的有序集合,基于跳表实现,适合并发操作。由于没有给出具体数据,无法直接对比。
2. **CopyOnWriteArraySet**:基于CopyOnWriteArrayList,适合读多写少的场景。
3. **EnumSet**:专用于枚举类型的高效Set实现,未提供具体测试数据。
4. **HashSet**:基于哈希表实现,提供快速查找,但不保证元素顺序。测试显示其性能为N78236094,表明其在大规模操作下的性能。
5. **LinkedHashSet**:保持插入顺序的HashSet,性能与HashSet相近,但增加了插入顺序维护的开销。
6. **TreeSet**:基于红黑树实现,保证排序,插入性能为N1723688203,适合需要排序的场景。
Map接口的实现:
由于没有提供具体测试数据,无法直接评估如HashMap、TreeMap、LinkedHashMap等的性能,但通常HashMap提供快速的查找,TreeMap保证排序,而LinkedHashMap保持插入或访问顺序。
总结来说,选择哪种集合类取决于具体需求。如果需要快速的随机访问,ArrayList或HashSet可能是好选择;对于大量并发写入,CopyOnWriteArrayList和CopyOnWriteArraySet可以减少同步开销;而LinkedList适合频繁的插入和删除;对于排序需求,TreeSet和TreeMap是不错的选择。在实际应用中,应根据操作模式和并发需求选择最合适的集合类型。
ansj
- 粉丝: 20
- 资源: 4
最新资源
- 694546715158136split_config.arm64_v8a.apk
- 956428135421969split_config.xxxhdpi.apk
- Transformer自注意机制精讲(附源码+PDF课件)
- WPF-自定义Calendar样式,动态切换中英文并自定义文字
- 647358537941210split_config.zh.apk
- gspacev2.2.9版本-gspace
- 92e3977bbfaa35200dec6020daf220ae.zip
- notepad++8.5.3
- 视频游戏检测33-YOLO(v5至v9)、CreateML、Darknet、VOC数据集合集.rar
- 基于easyx所做的自习室座位推荐系统