`

java HashMap TreeMap(key顺序) LinkedHashMap(插入顺序)学习

    博客分类:
  • java
 
阅读更多
java为数据结构中的映射定义了一个接口java.util.Map;它有四个实现类,分别是HashMap Hashtable LinkedHashMap 和TreeMap.

Map主要用于存储健值对,根据键得到值,因此不允许键重复(重复了覆盖了),但允许值重复。
Hashmap 是一个最常用的Map,它根据键的HashCode值存储数据,根据键可以直接获取它的值,具有很快的访问速度,遍历时,取得数据的顺序是完全随机的。 HashMap最多只允许一条记录的键为Null;允许多条记录的值为 Null;HashMap不支持线程的同步,即任一时刻可以有多个线程同时写HashMap;可能会导致数据的不一致。如果需要同步,可以用 Collections的synchronizedMap方法使HashMap具有同步的能力,或者使用ConcurrentHashMap。

Hashtable与 HashMap类似,它继承自Dictionary类,不同的是:它不允许记录的键或者值为空;它支持线程的同步,即任一时刻只有一个线程能写Hashtable,因此也导致了 Hashtable在写入时会比较慢。

LinkedHashMap 是HashMap的一个子类,保存了记录的插入顺序,在用Iterator遍历LinkedHashMap时,先得到的记录肯定是先插入的.也可以在构造时用带参数,按照应用次数排序。在遍历的时候会比HashMap慢,不过有种情况例外,当HashMap容量很大,实际数据较少时,遍历起来可能会比 LinkedHashMap慢,因为LinkedHashMap的遍历速度只和实际数据有关,和容量无关,而HashMap的遍历速度和他的容量有关。

TreeMap实现SortMap接口,能够把它保存的记录根据键排序,默认是按键值的升序排序,也可以指定排序的比较器,当用Iterator 遍历TreeMap时,得到的记录是排过序的。

一般情况下,我们用的最多的是HashMap,在Map 中插入、删除和定位元素,HashMap 是最好的选择。但如果您要按自然顺序或自定义顺序遍历键,那么TreeMap会更好。如果需要输出的顺序和输入的相同,那么用LinkedHashMap 可以实现,它还可以按读取顺序来排列.

HashMap是一个最常用的Map,它根据键的hashCode值存储数据,根据键可以直接获取它的值,具有很快的访问速度。HashMap最多只允许一条记录的键为NULL,允许多条记录的值为NULL。

HashMap不支持线程同步,即任一时刻可以有多个线程同时写HashMap,可能会导致数据的不一致性。如果需要同步,可以用Collections的synchronizedMap方法使HashMap具有同步的能力。

Hashtable与HashMap类似,不同的是:它不允许记录的键或者值为空;它支持线程的同步,即任一时刻只有一个线程能写Hashtable,因此也导致了Hashtable在写入时会比较慢。

LinkedHashMap保存了记录的插入顺序,在用Iterator遍历LinkedHashMap时,先得到的记录肯定是先插入的。

在遍历的时候会比HashMap慢TreeMap能够把它保存的记录根据键排序,默认是按升序排序,也可以指定排序的比较器。当用Iterator遍历TreeMap时,得到的记录是排过序的。



分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    java HashMap,TreeMap与LinkedHashMap的详解

    在Java编程语言中,`HashMap`、`TreeMap`和`LinkedHashMap`都是`java.util.Map`接口的实现,它们提供了不同的数据存储和访问策略。本文将深入探讨这三种数据结构的特点、工作原理以及适用场景。 1. **HashMap** `...

    Map,HashMap,TreeMap的使用

    在 Java 中,HashMap、LinkedHashMap、TreeMap 都实现了 Map 接口,都是 Map 的子类,每个子类都有其特点和使用场景。 HashMap HashMap 是最常用的 Map 实现类,它根据键的哈希码值存储数据,能够快速地存储和获取...

    HashMap vs TreeMap vs Hashtable vs LinkedHashMap

    Map; public class Q26 { public static void main...LinkedHashMap保留了元素的插入顺序或访问顺序,对于需要保持顺序的Map操作很有用。选择哪种Map取决于具体的需求,例如性能、线程安全、排序需求以及元素顺序等。

    Java map集合顺序如何同步添加顺序

    运行结果显示,HashMap 的元素顺序是不可预测的,TreeMap 的元素顺序是按照键的自然顺序,LinkedHashMap 的元素顺序则是按照添加顺序。因此,如果需要保证 Map 集合的顺序同步添加顺序,LinkedHashMap 是最好的选择...

    Java集合专题总结:HashMap 和 HashTable 源码学习和面试总结

    Map接口用于保存具有key-value映射关系的数据,常见的Map实现包括HashMap、TreeMap、HashTable和LinkedHashMap等。Queue是Java提供的队列实现。 本文总结了HashMap和HashTable的源码学习和面试总结,涵盖了它们的...

    LinkedHashMap

    这个数据结构结合了哈希表(HashMap)和链表的特点,能够在保持元素的键值对存储的同时,保证元素的插入顺序或者按照访问顺序进行排列。在本文中,我们将深入探讨`LinkedHashMap`的工作原理、特性以及如何在实际编程...

    Java基础学习23.pdf

    在Java基础学习中,掌握Map的子类如HashMap、LinkedHashMap和TreeMap对于深入理解Java编程至关重要。 HashMap是Map接口的一个实现,它基于哈希表(也称为散列表)进行操作,提供了快速的插入、删除和查找操作。在...

    Map-main-源码.rar

    LinkedHashMap是HashMap的一个子类,它同时维护了一个双向链表来保持插入顺序或者访问顺序。这意味着在插入新的键值对或访问现有键值对时,可以控制它们在Map中的顺序。这种特性使得LinkedHashMap在需要保持插入顺序...

    HASHMAP排序功能描述

    LinkedHashMap是HashMap的一个子类,它维护了元素的插入顺序或者访问顺序。如果想要按照插入顺序排序,直接使用LinkedHashMap即可。如果需要按照访问顺序排序,可以在构造时传入`true`参数,这样每次访问元素时都会...

    java中map的使用实例

    2. **LinkedHashMap**:LinkedHashMap保持了元素的插入顺序,或者按照访问顺序(如果设置了`accessOrder`为true)。它在HashMap的基础上添加了一个双向链表,因此在遍历时能保持顺序性,但牺牲了一些性能。 3. **...

    java中set、list和map的使用方法实例

    // java中对象容器主要有Set,List和Map三个接口类。...// LinkedHashMap按插入顺序排序 // TreeMap按自己的意愿进行排序,默认按key值升序排序。 另包含一篇网文:在java中使用TreeMap进行中文排序

    Java Map 集合类简介

    Java的核心类库提供了多种Map实现,如HashMap、TreeMap、LinkedHashMap、Hashtable等。HashMap是默认的无序、非同步实现,适合大多数情况;TreeMap基于红黑树,提供了有序的键值对,但性能略低于HashMap;...

    浅谈Java中常用数据结构的实现类Collection和M

    3. LinkedHashMap:LinkedHashMap结合了HashMap的快速查找和TreeMap的有序性。它维护了元素插入的顺序,或者也可以通过access-order属性来按照访问顺序排序。这在需要保持某种顺序的场景下非常有用。 在实际开发中...

    java 运用映射的相关类(Map)

    例如,如果你需要一个保持插入顺序且高效的Map,那么LinkedHashMap将是不错的选择;如果在多线程环境下,ConcurrentHashMap则是首选。 从压缩包中的`MyMapClass.java`文件名推测,这可能是一个自定义的Map类实现,...

    基础深化和提高-java容器

    在Java中,容器(Container)指的是...Map用于存储键值对(Key-Value Pair)的数据,它的实现类有HashMap、TreeMap、LinkedHashMap等。Map中的键是唯一的,每个键对应一个值。通过键可以快速查找对应的值,这使得Map

    【IT十八掌徐培成】Java基础第11天-01.Map集合.zip

    3. LinkedHashMap:LinkedHashMap继承自HashMap,它维护了插入顺序或者按照访问顺序的顺序,这为迭代提供了一定的顺序性。这种特性使得LinkedHashMap在需要保持元素插入顺序或访问顺序时非常有用。 4. Hashtable:...

    java中map集合的用法

    LinkedHashMap继承自HashMap,它保留了插入顺序或者访问顺序。这意味着迭代Map时,元素会按照插入的顺序或者最近访问的顺序返回。 **5. Map的基本操作** - `put(K key, V value)`: 将指定的键值对放入Map中,如果键...

    java中级面试题(自己汇总)

    本文总结了Java中级面试题,涵盖了集合、HashMap、HashSet、HashTable、ConcurrentHashMap、红黑树、Java 8对HashMap的优化、LinkedHashMap、TreeMap、IdentityHashMap等知识点。 集合 * List和Set都是继承自...

    关于java基础的

    Map接口在Java的`java.util`包中定义,提供了多种实现,如HashMap、TreeMap、LinkedHashMap等,每种实现都有其特定的特性和用途。例如: 1. HashMap:这是最常用的Map实现,基于哈希表,提供快速的插入、删除和查找...

    java map 集合 排序

    无论你是使用自动排序的TreeMap,还是保持插入顺序的LinkedHashMap,或者手动排序HashMap,都能满足不同的排序需求。在实际开发中,理解并熟练运用这些排序方式,能帮助我们编写出更加高效和可维护的代码。

Global site tag (gtag.js) - Google Analytics