首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

应该使用TreeMap或HashMap包装命名参数?

在Java编程中,应该使用TreeMap或HashMap包装命名参数,取决于您的需求。

HashMap是一个基于哈希表的无序集合,它提供了快速的键值对存储和检索。HashMap不会对键值对进行排序,因此它的性能较高。如果您需要快速查找和检索键值对,那么HashMap是一个很好的选择。

TreeMap是一个基于红黑树的有序集合,它会根据键值自然排序或者通过自定义比较器进行排序。如果您需要对键值对进行排序,那么TreeMap是一个更好的选择。

总之,如果您需要有序的键值对,那么应该使用TreeMap;如果您需要快速的键值对存储和检索,那么应该使用HashMap。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

stackoverflow上一个最会举例子的专家

#50551555 HashMap,LinkedHashMap和TreeMap之间的区别 这三个类都实现了Map接口,并提供了大部分相同的功能。...LinkedHashMap与HashMap非常相似,但它增加了对添加(访问)项目的顺序的认知,因此迭代顺序与插入顺序(访问顺序,取决于构造参数)相同。 TreeMap是基于树的映射。...它要求项目具有一些比较机制,可以使用ComparableComparator。迭代顺序由此机制确定。 ? ? ? 其实就是LinkedHashMap是插入顺序,TreeMap是排序的顺序。...---- 内聚是指类(模块)可以做什么。低凝聚力意味着班级做了各种各样的行动 - 它是广泛的,没有关注它应该做什么。高凝聚力意味着课程专注于应该做的事情,即只关注课堂意图的方法。...我无法理解如何使用wait()和之间的线程之间进行通信notify()。 ? ? 其实wait,notify成员函数不应该属于线程,它应该属于命名为东西条件变量它来自POSIX线程。

63850

Java核心技术点之集合框架

这些集合框架中的接口定义了一个集合类型应该实现的基本机制,Java类库为我们提供了一些具体集合类型的参考实现,根据对数据组织及使用的不同需求,只需要实现不同的接口即可。...首先,它使用了一个类型参数;其次,它实现了Iterable接口,我们再来看下Iterable接口的定义: ?...通过使用视图可以获得其他的实现了Map接口Collection接口的对象。比如我们上面提到的TreeMapHashMap的keySet()方法就会返回一个相应映射表对象的视图。...考虑这样一个场景:你需要把一个之前创建的数组传递给一个接收List参数的方法,那么你可以使用Arrays.asList方法返回一个包装了数组的视图(这需要的空间复杂度是常数级别的),而不用创建一个新的ArrayList...下面我们看一下官方文档对Collections的描述: Collections类包含了大量用于操作返回集合的静态方法。它包含操作集合的多态算法,还有包装集合的包装器方法等等。

52110
  • java面试热点:集合框架(二)

    TreeMap有以下构造器: TreeMap() //使用自然序对其元素进行排序 TreeMap(Comparator<?...---- 视图(View)与包装器 Java中的集合视图是用来查看集合中全部部分数据的一个”窗口“,只不过通过视图我们不仅能查看相应集合中的元素,对视图的操作还可能会影响到相应的集合。...比如TreeMapHashMap的keySet()方法就会返回一个相应映射表对象的视图。通过使用视图可以获得其他的实现了Map接口Collection接口的对象。...下面我们看一下官方文档对Collections的描述: Collections类包含了大量用于操作返回集合的静态方法。它包含操作集合的多态算法,还有包装集合的包装器方法等等。...Hashtable和HashMap采用的hash/rehash算法都大概一样,所以性能不会有很大的差异。 总结 关于Java集合框架,我们首先应该把握住几个核心的接口,请看下图: ?

    57600

    Java从入门到精通八(Java数据结构--Map集合)

    entrySet的使用 在Map中看一下entrySet()方法,我们得到的信息如下: 说明了entrySet当然也就键值组成,同时里面包装的类型也就是Map.Entry。...此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。(除了非同步和允许使用 null 之外,HashMap 类与 Hashtable 大致相同。)...如果不存在这样的对象,则应该使用 Collections.synchronizedMap 方法来“包装”该映射。...如果不存在这样的对象,则应该使用 Collections.synchronizedSortedMap 方法来“包装”该映射。...返回TreeMap的所有键/值映射(条目)的集合(此处方法一如以上使用方式) keySet() - 返回TreeMap的所有键的集合(获取到键) values() - 返回TreeMap的所有图的集合

    71910

    HashMap相关(二)

    此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。(除了不同步和允许使用 null 之外, HashMap 类与 Hashtable 大致相同。)...所以,如果迭代性能很重要,则不要将初始容量设置得太高(将加载因子设置得太低)。 HashMap 的实例有两个参数影响其性能:初始容量 和加载因子。...如果不存在这样的对象,则应该使用 Collections.synchronizedMap 方法来“包装”该映射。...再来看看HashMapTreeMap有什么区别。...HashMap通过hashcode对其内容进行快速查找,而TreeMap中所有的元素都保持着某种固定的顺序,如果你需要得到一个有序的结果你就应该使用TreeMapHashMap中元素的排列顺序是不固定的

    46250

    Java--集合类之Collection与Map

    Hashtable线程安全,性能比较差,现在很少使用HashMap是线程不安全的,性能较好,可以实现线程安全,推荐使用。...另外,HashMap允许使用null作为keyvalue,但Hashtable中key和value都不可以使用null....TreeMap的排列方式类似与TreeSet的排序方式: 默认排序:TreeSet的所有key必须实现Comparable接口,而且所有key应该是同一类型的对象。...key; LinkHashMap要比HashMap慢一些,因为它需要维护一个链表; IIdentityHashMap性能和HashMap差不多,因为两者有基本相似的实现; TreeMap通常比HashMap...如果程序中有多个线程需要访问以上这些集合,就可以使用Collections提供的类方法把这些集合包装成线程安全的集合。

    92480

    Java集合框架详解(全)

    实现类的性能分析   HashSet的性能比TreeSet的性能好(特别是添加,查询元素时),因为TreeSet需要额外的红黑树算法维护元素的次序,如果需要一个保持排序的Set时才用TreeSet,否则应该使用...♦ HashMap可以使用null值最为keyvalue;Hashtable不允许使用null值作为key和value,如果把null放进HashTable中,将会发生空指针异常。   ...HashMap使用链表来解决碰撞问题,当发生碰撞了,对象将会存储在链表的下一个节点中。...TreeMap也有两种排序方式:   ♦ 自然排序:TreeMap的所有key必须实现Comparable接口,而且所有的key应该是同一个类的对象,否则会抛出ClassCastException。   ...5)各Map实现类的性能分析   ♦ HashMap通常比Hashtable(古老的线程安全的集合)要快   ♦ TreeMap通常比HashMap、Hashtable要慢,因为TreeMap底层采用红黑树来管理

    89920

    《求求大厂给个Offer》Map面试题

    三歪:“实现就在hash方法上,可以发现的是,它是先算出正常的哈希值,然后与高16位做异运算,产生最终的哈希值。这样做的好处可以增加了随机性,减少了碰撞冲突的可能性。” ?...当然了,也可以使用Collections来包装出一个线程安全的Map。...但无论是Hashtable还是Collections包装出来的都比较低效(因为是直接在外层套synchronize),所以我们一般有线程安全问题考量的,都使用ConcurrentHashMap” 三歪:...的HashMap还没有引入红黑树....ConcurrentHashMap 在JDK7 还是使用分段锁的方式来实现,而JDK 8 就又不一样了。...三歪:“我就没用过JDK 7的API,我想着现在最低应该也是用JDK8了吧?所以我就没去仔细看了。要不我给你讲讲多线程相关的知识呗?” ? 三歪:“哦”

    37640

    第十四届蓝桥杯集训——HashMap(无序)与TreeMap(有序)

    第十四届蓝桥杯集训——HashMap(无序)与TreeMap(有序) 目录 第十四届蓝桥杯集训——HashMap(无序)与TreeMap(有序) HashMap 包装类泛型约束 HashMap无序操作...TreeMap TreeMap有序操作 HashMap HashMap 是一个散列表,它存储的内容是键值对(key-value)映射。...包装类泛型约束 map也是支持泛型的,这个Key和Value泛型除了基本数据类型外还有【Number】、【Object】、 基本类型 引用类型 boolean Boolean byte Byte short...Short int Integer long Long float Float double Double char Character E - Element (在集合中使用,因为集合中存放的是元素...{ public static void main(String[] args) { TreeMap map = new TreeMap<String, Object

    21410

    如何决定使用 HashMap 还是 TreeMap

    适用于按自然顺序自定义顺序遍历键(key)。 HashMap的Key值实现散列hashCode(),分布是散列的、均匀的,不支持排序;数据结构主要是桶(数组),链表红黑树。...如何决定使用 HashMap 还是 TreeMap? 如果你需要得到一个有序的结果时就应该使用TreeMap(因为HashMap中元素的排列顺序是不固定的)。...除此之外,由于HashMap有更好的性能,所以大多不需要排序的时候我们会使用HashMap。 拓展 1、HashMapTreeMap 的实现 HashMap:基于哈希表实现。...TreeMap(SortedMap s): 构建一个映像树,添加映像树s中所有映射,并且使用与有序映像s相同的比较器排序 2、HashMapTreeMap 都是非线程安全 HashMap继承AbstractMap...之后,通过MyComparator类初始化一个比较器实例,将其作为参数传进TreeMap的构造方法中: ? 这样,我们就可以使用自定义的比较器实现降序了 ?

    1.2K40

    Java集合类操作优化经验总结

    从功能上讲,TreeMap 有着比 HashMap 更为强大的功能,它实现了 SortedMap 接口,这意味着它可以对元素进行排序。TreeMap 的性能略微低于 HashMap。...如果在开发中需要对元素进行排序,那么使用 HashMap 便无法实现这种功能,使用 TreeMap 的迭代输出将会以元素顺序进行。...因此应该小心谨慎,确保值对象不会直接间接地强引用其自身的键,因为这会阻止键的丢弃。...总结 综合前面的介绍和实例代码,我们可以知道,如果涉及到堆栈、队列等操作,应该考虑用 List。对于需要快速插入、删除元素等操作,应该使用 LinkedList。...如果需要快速随机访问元素,应该使用 ArrayList。如果程序在单线程环境中,或者访问仅仅在一个线程中进行,考虑非同步的类,其效率较高。如果多个线程可能同时操作一个类,应该使用同步的类。

    1.3K170

    Java集合类详解

    T[] *All方法参数的类型都为Collection ,大多数方法都是返回boolean类型值,Collection 接口用于表示任何对象元素组。...HashMap 类和 TreeMap 类 “集合框架”提供两种常规的 Map 实现:HashMapTreeMap。和所有的具体实现一样,使用哪种实现取决于您的特定需要。...根据集合大小,先把元素添加到 HashMap,再把这种映射转换成一个用于有序键遍历的 TreeMap 可能更快。使用HashMap 要求添加的键类明确定义了 hashCode() 实现。...映射的使用示例 以下程序演示了具体 Map 类的使用。该程序对自命令行传递的词进行频率计数。HashMap 起初用于数据存储。后来,映射被转换为TreeMap 以显示有序的键列列表。...9、什么时候使用Hashtable,什么时候使用HashMap   基本的不同点是Hashtable同步HashMap不是的,所以无论什么时候有多个线程访问相同实例的可能时,就应该使用Hashtable

    92920

    HashMapTreeMap、LinkedHashMap 三者有啥相同点,有啥不同点?

    HashMapTreeMap、LinkedHashMap 三者有啥相同点,有啥不同点?...答: 相同点: 三者在特定的情况下,都会使用红黑树; 底层的 hash 算法相同; 在迭代的过程中,如果 Map 的数据结构被改动,都会报 ConcurrentModificationException...不同点: HashMap 数据结构以数组为主,查询非常快, TreeMap 数据结构以红黑树为主,利用了红黑树左小右大的特点,可以实现 key 的排序, LinkedHashMap 在 HashMap...的基础上增加了链表的结构,实现了插入顺序访问和最少访问删除两种策略; 由于三种 Map 底层数据结构的差别,导致了三者的使用场景的不同, TreeMap 适合需要根据 key 进行排序的场景, LinkedHashMap...适合按照插入顺序访问,需要删除最少访问元素的场景, 剩余场景我们使用 HashMap 即可,我们工作中大部分场景基本都在使用 HashMap; 由于三种 map 的底层数据结构的不同,导致上层包装

    1.1K51

    Java基础-甲骨文系列

    在泛型使用过程中,操作的数据类型被指定为一个参数,这种参数类型在类中称为泛型类、接口中称为泛型接口和方法中称为泛型方法。...装箱就是自动将基本数据类型转换为包装器类型,如int->Integer 拆箱就是自动将包装器类型转换为基本数据类型,如Integer->int ,在使用包装类型的时候,会自动进行拆箱。...Hashtable使用Enumeration进行遍历,HashMap使用Iterator进行遍历。 如何决定使用HashMap还是TreeMap?...结论1:如果对Map进行插入、删除定位一个元素的操作更频繁,HashMap是更好的选择。如果需要对key集合进行有序的遍历,TreeMap是更好的选择。...结论2:如果你需要得到一个有序的结果时就应该使用TreeMap(因为HashMap中元素的排列顺序是不固定的)。

    84510

    如何决定使用 HashMap 还是 TreeMap

    @toc 问 :如何决定使用 HashMap 还是 TreeMap?...适用于按自然顺序自定义顺序遍历键(key)。 HashMap的Key值实现散列hashCode(),分布是散列的、均匀的,不支持排序;数据结构主要是桶(数组),链表红黑树。...结论 如果你需要得到一个有序的结果时就应该使用TreeMap(因为HashMap中元素的排列顺序是不固定的)。...除此之外,由于HashMap有更好的性能,所以大多不需要排序的时候我们会使用HashMap。 拓展 1、HashMapTreeMap 的实现 HashMap:基于哈希表实现。...TreeMap(SortedMap s): 构建一个映像树,添加映像树s中所有映射,并且使用与有序映像s相同的比较器排序 2、HashMapTreeMap 都是非线程安全 HashMap继承AbstractMap

    78920

    集合类操作优化经验总结

    从功能上讲,TreeMap 有着比 HashMap 更为强大的功能,它实现了 SortedMap 接口,这意味着它可以对元素进行排序。TreeMap 的性能略微低于 HashMap。...如果在开发中需要对元素进行排序,那么使用 HashMap 便无法实现这种功能,使用 TreeMap 的迭代输出将会以元素顺序进行。...因此应该小心谨慎,确保值对象不会直接间接地强引用其自身的键,因为这会阻止键的丢弃。...总结 综合前面的介绍和实例代码,我们可以知道,如果涉及到堆栈、队列等操作,应该考虑用 List。对于需要快速插入、删除元素等操作,应该使用 LinkedList。...如果需要快速随机访问元素,应该使用 ArrayList。如果程序在单线程环境中,或者访问仅仅在一个线程中进行,考虑非同步的类,其效率较高。如果多个线程可能同时操作一个类,应该使用同步的类。

    74520

    面试:如何决定使用 HashMap 还是 TreeMap

    问:如何决定使用 HashMap 还是 TreeMap?...适用于按自然顺序自定义顺序遍历键(key)。 HashMap的Key值实现散列hashCode(),分布是散列的、均匀的,不支持排序;数据结构主要是桶(数组),链表红黑树。...结论 如果你需要得到一个有序的结果时就应该使用TreeMap(因为HashMap中元素的排列顺序是不固定的)。...除此之外,由于HashMap有更好的性能,所以大多不需要排序的时候我们会使用HashMap。 拓展 1、HashMapTreeMap 的实现 HashMap: 基于哈希表实现。...TreeMap(SortedMap s): 构建一个映像树,添加映像树s中所有映射,并且使用与有序映像s相同的比较器排序 2、HashMapTreeMap 都是非线程安全 HashMap继承AbstractMap

    1.3K10

    面试官:如何决定使用 HashMap 还是 TreeMap

    适用于按自然顺序自定义顺序遍历键(key)。 HashMap的Key值实现散列hashCode(),分布是散列的、均匀的,不支持排序;数据结构主要是桶(数组),链表红黑树。...结论 如果你需要得到一个有序的结果时就应该使用TreeMap(因为HashMap中元素的排列顺序是不固定的)。...除此之外,由于HashMap有更好的性能,所以大多不需要排序的时候我们会使用HashMap。 拓展 1、HashMapTreeMap 的实现 HashMap: 基于哈希表实现。...使用HashMap要求添加的键类明确定义了hashCode()和equals()[可以重写hashCode()和equals()],为了优化HashMap空间的使用,您可以调优初始容量和负载因子。...TreeMap(SortedMap s): 构建一个映像树,添加映像树s中所有映射,并且使用与有序映像s相同的比较器排序 2、HashMapTreeMap 都是非线程安全 HashMap继承AbstractMap

    39920

    「Java面试题精华集」1w字的Java集合框架篇(2020最新版)附PDF版 !

    ()方法和使用自制的Comparator方法或者以两个 Comparator 来实现歌名排序和歌星名排序,第二种代表我们只能使用两个参数版的 Collections.sort()....这也就解释了 HashMap 的长度为什么是 2 的幂次方。 这个算法应该如何设计呢? 我们首先可能会想到采用%取余的操作来实现。...当一个线程访问同步方法时,其他线程也访问同步方法,可能会进入阻塞轮询状态,如使用 put 添加元素,另一个线程不能使用 put 添加元素,也不能使用 get,竞争会越来越激烈效率越低。...有了前面讲的基础,我们应该知道:使用 Iterator 提供的 remove 方法,可以修改到 expectedModCount 的值。...我们使用包装类型数组就可以解决这个问题。 Integer[] myArray = { 1, 2, 3 }; 使用集合的修改方法:add()、remove()、clear()会抛出异常。

    1.3K20
    领券