Java常见集合类⭐️创建以及使用方式,从具体案例分析每种集合的方法之间的区别

目录

​编辑

最近对Java的常见集合类进行了查看源码,重要方法,怎么使用做了分析,今天来总结以下,后面也好方便回顾

1.常见的集合类

2. ArrayList和LinkedList区别

3.HashMap , ConcurrentHashMap ,HashTable区别


最近对Java的常见集合类进行了查看源码,重要方法,怎么使用做了分析,今天来总结以下,后面也好方便回顾

1.常见的集合类

主要分为两类,Collection,Map

Java常见集合类⭐️创建以及使用方式,从具体案例分析每种集合的方法之间的区别_第1张图片

       

  1. 1.Collection 中有两个子接口
  • list接口中常用的实现类有 Array List和LinkedList
  • set接口中有实现类HashSet和TreeSet
  1. 2.Map中常见的实现类有:Hash Map,Tree Map,ConcurrentHashMap

2. ArrayList和LinkedList区别

  1. 内部实现方式:

    • ArrayList:使用数组实现,内部维护一个可变长度的数组来存储元素。
    • LinkedList:使用链表实现,内部由一系列节点组成,每个节点包含数据和指向下一个节点的引用。
  2. 访问效率:

    • ArrayList 的随机访问效率较高,通过索引可以直接访问数组中的元素,时间复杂度为 O(1)。
    • LinkedList 的随机访问效率较低,需要从头节点开始遍历查找指定位置的元素,时间复杂度为 O(n)。
  3. 插入和删除操作:

    • ArrayList 在末尾插入和删除元素的效率较高,时间复杂度为 O(1)。但在中间或开头插入和删除元素时,需要进行数组元素的移动,效率较低,时间复杂度为 O(n)。
    • LinkedList 在任意位置插入和删除元素的效率较高,只需要修改节点的引用,时间复杂度为 O(1)。但在获取指定位置的元素时,需要从头节点开始遍历查找,效率较低,时间复杂度为 O(n)。
  4. 空间占用:

    • ArrayList 在内存中连续存储元素,相对于 LinkedList 会占用较少的内存空间。
    • LinkedList 需要为每个节点额外存储一个指向下一个节点的引用,相对于 ArrayList 会占用更多的内存空间。 

3.HashMap , ConcurrentHashMap ,HashTable区别

  1. 线程安全性:

    • Hashtable:Hashtable 是线程安全的,所有的方法都是同步的(synchronized),这意味着多个线程可以安全地访问一个 Hashtable 实例。
    • HashMap:HashMap 不是线程安全的,它的方法不是同步的,如果多个线程同时访问一个 HashMap 实例,可能会导致不确定的行为。
    • ConcurrentHashMap:ConcurrentHashMap 也是线程安全的,但它的实现方式与 Hashtable 不同,它使用了更加精细的锁机制,能够在保证线程安全的同时提供更好的性能。
  2. null 值:

    • Hashtable:不允许键或值为 null。
    • HashMap:允许键和值为 null。
    • ConcurrentHashMap:允许键和值为 null。
  3. 性能:

    • 在并发场景下,ConcurrentHashMap 的性能通常优于 Hashtable,因为它采用了分段锁(segmented locking)的方式,不同的部分可以被不同的线程同时访问,从而提高了并发访问的效率。
    • 如果你需要一个线程安全的 Map 并且不需要允许 null 值,可以选择使用 Hashtable 或 ConcurrentHashMap;如果你不需要线程安全性,或者需要允许 null 值,可以选择使用 HashMap。在并发场景下,不建议使用Hashtable,推荐使用 ConcurrentHashMap 来获取更好的性能表现。


 不积跬步,无以千里 Java常见集合类⭐️创建以及使用方式,从具体案例分析每种集合的方法之间的区别_第2张图片

你可能感兴趣的:(Java数据结构,java,数据结构,开发语言)