草庐IT

java - TreeMap 或 HashMap 更快

这个问题在这里已经有了答案:DifferencebetweenHashMap,LinkedHashMapandTreeMap(17个回答)WhatisthedifferencebetweenaHashMapandaTreeMap?[duplicate](8个回答)关闭8年前。我正在编写一个字典,它大量使用字符串作为Map中的键。.我关心的是HashMap中的哪一个和TreeMap在map中搜索键时会带来更好(更快)的性能吗? 最佳答案 鉴于没有多少碰撞,HashMap将为您提供o(1)的性能(如果有很多碰撞,这可能会降低到潜在的O(

java - 当许多键具有相同的哈希码时,Java 8 的 HashMap 如何退化为平衡树?

当许多键具有相同的哈希码时,Java8的HashMap如何退化为平衡树?我读到键应该实现Comparable来定义排序。HashMap如何结合散列和自然排序来实现树?没有实现Comparable的类,或者当多个不可相互比较的Comparable实现是同一个映射中的键时,该怎么办? 最佳答案 implementationnotescommentinHashMap比我自己写的更好地描述了HashMap的操作。了解树节点及其排序的相关部分是:Thismapusuallyactsasabinned(bucketed)hashtable,bu

java - 当许多键具有相同的哈希码时,Java 8 的 HashMap 如何退化为平衡树?

当许多键具有相同的哈希码时,Java8的HashMap如何退化为平衡树?我读到键应该实现Comparable来定义排序。HashMap如何结合散列和自然排序来实现树?没有实现Comparable的类,或者当多个不可相互比较的Comparable实现是同一个映射中的键时,该怎么办? 最佳答案 implementationnotescommentinHashMap比我自己写的更好地描述了HashMap的操作。了解树节点及其排序的相关部分是:Thismapusuallyactsasabinned(bucketed)hashtable,bu

java - 如何将字符串转换为 HashMap?

这个问题在这里已经有了答案:Convertstringrepresentingkey-valuepairstoMap(8个回答)关闭去年。我有一个Java属性文件,其中有一个KEY作为ORDER.所以我检索了VALUE其中KEY使用getProperty()加载属性文件后的方法如下:Strings=prop.getProperty("ORDER");然后s="SALES:0,SALE_PRODUCTS:1,EXPENSES:2,EXPENSES_ITEMS:3";我需要从上面的字符串创建一个HashMap。SALES,SALE_PRODUCTS,EXPENSES,EXPENSES_IT

java - 如何将字符串转换为 HashMap?

这个问题在这里已经有了答案:Convertstringrepresentingkey-valuepairstoMap(8个回答)关闭去年。我有一个Java属性文件,其中有一个KEY作为ORDER.所以我检索了VALUE其中KEY使用getProperty()加载属性文件后的方法如下:Strings=prop.getProperty("ORDER");然后s="SALES:0,SALE_PRODUCTS:1,EXPENSES:2,EXPENSES_ITEMS:3";我需要从上面的字符串创建一个HashMap。SALES,SALE_PRODUCTS,EXPENSES,EXPENSES_IT

Java HashMap.get(Object) 无限循环

关于SO的一些答案提到,如果没有正确同步(通常底线是“不要使用HashMap在多线程环境中,使用ConcurrentHashMap")。虽然我可以很容易地看出为什么对HashMap.put(Object)方法的并发调用会导致无限循环,但我不太明白为什么get(Object)方法在尝试读取HashMap时会卡住在那一刻正在调整大小。我看了thisone它包含一个循环,但退出条件e!=null迟早应该满足。怎么可能永远循环?明确提到易受此问题影响的一段代码是:publicclassMyCache{privateMapmap=newHashMap();publicsynchronizedvo

Java HashMap.get(Object) 无限循环

关于SO的一些答案提到,如果没有正确同步(通常底线是“不要使用HashMap在多线程环境中,使用ConcurrentHashMap")。虽然我可以很容易地看出为什么对HashMap.put(Object)方法的并发调用会导致无限循环,但我不太明白为什么get(Object)方法在尝试读取HashMap时会卡住在那一刻正在调整大小。我看了thisone它包含一个循环,但退出条件e!=null迟早应该满足。怎么可能永远循环?明确提到易受此问题影响的一段代码是:publicclassMyCache{privateMapmap=newHashMap();publicsynchronizedvo

java - 为什么按原样实现调整大小?

在添加新的键值对时,我有几个关于重建HashMaps的问题。我将根据这些事实提出问题(它们适用于OracleJVM,不确定它们是否适用于其他JVM):Resize重建HashMap以在每次将HashMap增长到大于阈值(阈值=loadFactor*numberOfEntries)时拥有更大的内部表数组。新创建的条目放在哪个桶中并不重要-map仍然会变大。即使所有条目都进入一个桶(即它们的键的hashCode()返回相同的数字)。HashMap在删除数据时不会缩小。即使从HashMap中删除所有键,它的表的内部大小也不会改变。现在问题:这些事实是否正确?如果是,那么:为什么要以这种方式实

java - 为什么按原样实现调整大小?

在添加新的键值对时,我有几个关于重建HashMaps的问题。我将根据这些事实提出问题(它们适用于OracleJVM,不确定它们是否适用于其他JVM):Resize重建HashMap以在每次将HashMap增长到大于阈值(阈值=loadFactor*numberOfEntries)时拥有更大的内部表数组。新创建的条目放在哪个桶中并不重要-map仍然会变大。即使所有条目都进入一个桶(即它们的键的hashCode()返回相同的数字)。HashMap在删除数据时不会缩小。即使从HashMap中删除所有键,它的表的内部大小也不会改变。现在问题:这些事实是否正确?如果是,那么:为什么要以这种方式实

java - 何时应该使用 Hashtable 与 HashMap

这不是关于Hashtable和HashMap之间区别的问题。我知道Hashtable对象不能接受键或值条目的null值,它是同步集合,并且它使用的内存比HashMap略少。我想知道在哪些情况下使用Hashtable而不是HashMap更合适。 最佳答案 ThisisnotaquestionaboutthedifferencesbetweenHashtableandHashMap嗯,真的……I'mwonderingaboutthescenarioswhereitwouldbemoreappropriatetouseaHashtable