草庐IT

HashMap详解

全部标签

java - 在 HashMap 中迭代如何从最后到第一个?

我有HashMapitems=newHashMap();items.put("A","1");items.put("B","2");items.put("C","3");我需要从后到前。"C","3""B","2""A","1" 最佳答案 您可以使用NavigableMap(TreeMap是一个NavigableMap),它是一个具有导航功能的SortedMap。NavigableMap#descendingMap()返回此映射中包含的映射的逆序View(不是副本)。示例:NavigableMapitems=newTreeMap()

java - 使用字符串元组作为 HashMap 的键

这个问题在这里已经有了答案:CananarraybeusedasaHashMapkey?(9个回答)关闭9年前。我需要Java等同于以下Python:In[1]:d={}In[2]:k=("x","2")In[3]:d[k]=1In[4]:printd[("x","y")]1Python有可散列的元组。我尝试在Java中执行以下操作但未成功:Mapd=newHashMap();String[]k=newString[]{"x","y"};d.put(k,1);System.out.println(d.get(k));System.out.println(d.get(newString[

java - 为什么包含与键相同的值的 HashMap 的 HashCode 为零

我注意到在Java中,hashCode用于HashMap,它只包含键和值相同的条目,例如{1:1},{"abc":"abc"}等始终为零。这种奇怪的行为背后有什么原因吗? 最佳答案 这是specification的结果Map.Entry的hashCode(),它要求对键和值的哈希码进行异或运算。唯一可以告诉您为什么选择哈希码的人是最初编写它的人,尽管我的印象是Java后悔指定这个(坏的)哈希函数。 关于java-为什么包含与键相同的值的HashMap的HashCode为零,我们在Stac

java - HashMap 说 Key 不存在,即使它存在

我遇到了一个有趣的问题,我很确定这是HashMap的错。考虑以下调试代码(AMap是一个HashMap,key是传递给此方法的值)System.out.println("getBValues-Given:"+key);System.out.println("getBValues-ContainsKey:"+AMap.containsKey(key));System.out.println("getBValues-Value:"+AMap.get(key));for(Map.Entry>entry:AMap.entrySet()){System.out.println("getBValu

java - 如何通过 JNI 将 HashMap 从 Java 发送到 C

我有一个Object,它有一个HashMap字段。当Object传递给C时,我如何访问该字段?Object的Class具有以下字段:privateStringhello;privateMapparams=newHashMap(); 最佳答案 您问题的答案实际上归结为为什么您要传递一个Map到C而不是迭代你的Map在Java中并将内容传递给C。但是,我有什么资格质疑为什么?你问如何访问HashMap(在您提供的代码中,Map)字段?用Java为它编写一个访问器方法,并在传递容器时从C调用该访问器方法Object.下面是一些简单的示例代

java - 多线程如何破坏Hashmap的内部结构

在Java8fortheReallyImpatient中,Horstmann写道:IfmultiplethreadsmodifyaplainHashMap,theycandestroytheinternalstructure.Someofthelinksmaygomissing,orevengoincircles,renderingthedatastructureunusable.(Section6.2.1)我能理解不同步的并发访问会破坏我的数据。如果两个线程更新相同的值,一个可以覆盖另一个。但是为什么以及如何破坏内部存储器结构? 最佳答案

java - 什么更有效率? If Else 还是 HashMap?

我正在用Java编写一些代码来检查坐标在哪个象限,我想知道哪种方法更有效地检查它:if-elseblock或使用HashMap。HashMap看起来像这样:privatestaticfinalMapquadMap=newHashMap(){{put(newCoordinate(0,0),Quadrant.Q1);put(newCoordinate(0,1),Quadrant.Q2);put(newCoordinate(1,0),Quadrant.Q3);put(newCoordinate(1,1),Quadrant.Q4);}};然后我想在哪里获得我的象限:returnquadMap.

java - 遍历 hashmap 'in chunks'

我需要遍历包含5000个项目的hashmap,但在遍历第500个项目后我需要hibernate,然后继续接下来的500个项目。这是从here中窃取的示例.任何帮助将不胜感激。importjava.util.HashMap;importjava.util.Map;publicclassHashMapExample{publicstaticvoidmain(String[]args){Mapvehicles=newHashMap();//Addsomevehicles.vehicles.put("BMW",5);vehicles.put("Mercedes",3);vehicles.put

java - 使用 HashMap 时 Java 11 中的 ClassCastException 而不是 Java 8 中的?

请看我的代码:ObjectlongL=2548214;Mapmap=newHashMap(1);map.put("LongNumber",longL);List>returnlist=newArrayList(10);returnlist.add(map);ListversionMap1=newArrayList(10);versionMap1.add(returnlist);List>docIdVersionNameMap=newArrayList();docIdVersionNameMap.addAll((List>)versionMap1.get(0));MapversionDo

java - K 和 V 的 HashMap 默认类型

我通常会键入我的map声明,但在进行一些维护时发现了一个没有键入的声明。这让我开始思考(哦不!)。Map声明的默认类型是什么。请考虑以下事项:Mapmap=newHashMap();map.put("one","1st");map.put("two",newInteger(2));map.put("three","3rd");for(Map.Entryentry:map.entrySet()){System.out.println(entry.getKey()+"->"+entry.getValue());}此错误与Map.Entry上的不兼容类型有关。所以如果我输入声明:Mapmap