集合的一些实现类

本文详细介绍了Java中的单列集合(List、Set、Queue)以及Map接口的实现类(如ArrayList、LinkedList、HashSet、TreeSet、PriorityQueue、HashMap、TreeMap、LinkedHashMap、ConcurrentHashMap、Hashtable和EnumMap),对比了它们的特点和适用场景。
摘要由CSDN通过智能技术生成

单列集合Collection

1. 三个子接口

List:List 是有序的集合,可以存储重复元素。它通过索引访问元素。

Set:Set 是不允许重复元素的集合。它不保证元素的顺序,因此其实现类通常不会记住元素的插入顺序。

Queue:Queue 是一种先进先出(FIFO)的集合,通常用于实现队列数据结构。

单列集合在Java中有几种接口和实现类,其中包括List、Set和Queue等。

2.实现类:
 ArrayList:ArrayList 是基于动态数组实现的,它提供了动态增长的能力,并允许快速的随机访问。
  LinkedList:LinkedList 是基于双向链表实现的,它提供了快速的插入和删除操作,在元素的首尾操作上性能较好。
  HashSet:HashSet 是基于哈希表实现的,它提供了快速的查找、插入和删除操作,但不保证顺序。
  TreeSet:TreeSet 是基于红黑树实现的,它可以对元素进行排序,并提供了一些额外的操作。
  PriorityQueue:PriorityQueue 是基于优先级堆实现的,它根据元素的优先级顺序进行排序。

3 区别
1. List vs Set vs Queue:
   List 接口允许存储重复元素,并且能够按照索引访问元素。
   Set 接口不允许存储重复元素,并且通常不保证顺序。
   Queue 接口通常用于实现队列数据结构,提供了队列特有的操作。

2. ArrayList vs LinkedList:
   ArrayList 基于动态数组实现,能够提供快速的随机访问。
    LinkedList 基于双向链表实现,提供了快速的插入和删除操作。

3. HashSet vs TreeSet:
   HashSet 是基于哈希表实现的,提供了快速的查找、插入和删除操作。由于其哈希的特性,无法保证元素的顺序。
    TreeSet 是基于红黑树实现的,并能够对元素进行排序。

4. Queue 接口的实现:
   PriorityQueue 基于优先级堆实现,用于实现队列的优先级操作。

双列Map

1. HashMap:
   
使用哈希表实现,提供了快速的插入、删除和查找操作。
   不保证映射的顺序,即不保证迭代顺序与插入的顺序相同。
   允许键值为 null,但只有一个键值对可以为 null。

2. TreeMap:
   
基于红黑树实现,对键进行排序,提供了一些额外的操作,如根据键的自然顺序或自定义比较器排序。
   提供有序的键值视图,按照键的排序顺序进行迭代。

3. LinkedHashMap:
    
继承自 HashMap,通过双向链表维护插入顺序或访问顺序,因此可以保留插入顺序或访问顺序。
   在迭代时可以按照插入顺序或访问顺序进行迭代。

4. ConcurrentHashMap:
 
 线程安全的 Map 实现,采用分段锁机制,允许多个读操作并发进行,同时支持并发的读写操作。
   相比 Hashtable 采用了更细粒度的锁,并发性能更高。

5. Hashtable:
   
HashTable 是早期的 Map 实现之一,使用 synchronized 方法保证线程安全。
   不推荐使用,因为其同步开销比 ConcurrentHashMap 大,性能相对较低。

6. EnumMap:
 
 使用枚举类型作为键的高性能 Map 实现,效率较高,因为底层使用数组实现。

  • 8
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值