草庐IT

hashmaps

全部标签

Java HashMap containsKey 为现有对象返回 false

我有一个用于存储对象的HashMap:privateMapfields=Collections.synchronizedMap(newHashMap());但是,当尝试检查key是否存在时,containsKey方法返回false。实现了equals和hashCode方法,但是没有找到key。调试一段代码时:returnfields.containsKey(bean)&&fields.get(bean).isChecked();我有:bean.hashCode()=1979946475fields.keySet().iterator().next().hashCode()=197994

java - 如何在 Java 中复制 HashMap(不是浅拷贝)

我需要复制HashMap>但是当我更改副本中的某些内容时,我希望原件保持不变。即当我从List中删除某些内容时从它留在List的副本中在原来的。如果我理解正确,这两种方法创建的只是浅拷贝,这不是我想要的:mapCopy=newHashMap(originalMap);mapCopy=(HashMap)originalMap.clone();我说的对吗?有没有比遍历所有键和所有列表项并手动复制更好的方法? 最佳答案 不幸的是,这确实需要迭代。但这对于Java8流来说非常简单:mapCopy=map.entrySet().stream(

java - 如何在 Java 中复制 HashMap(不是浅拷贝)

我需要复制HashMap>但是当我更改副本中的某些内容时,我希望原件保持不变。即当我从List中删除某些内容时从它留在List的副本中在原来的。如果我理解正确,这两种方法创建的只是浅拷贝,这不是我想要的:mapCopy=newHashMap(originalMap);mapCopy=(HashMap)originalMap.clone();我说的对吗?有没有比遍历所有键和所有列表项并手动复制更好的方法? 最佳答案 不幸的是,这确实需要迭代。但这对于Java8流来说非常简单:mapCopy=map.entrySet().stream(

java - 如何根据值以升序打印 HashMap<String, String> 的内容?

我有这个HashMap我需要根据其中包含的values以升序打印出来(不是key)。但是我打印出来的顺序似乎是随机的。以升序打印出来的最佳方式是什么?Mapcodes=newHashMap();codes.put("A1","Aania");codes.put("X1","Abatha");codes.put("C1","Acathan");codes.put("S1","Adreenas");换句话说,上面的例子应该是这样打印出来的:A1,AaniaX1,AbathaC1,AcathanS1,Adreenas 最佳答案 您无法仅从

java - 如何根据值以升序打印 HashMap<String, String> 的内容?

我有这个HashMap我需要根据其中包含的values以升序打印出来(不是key)。但是我打印出来的顺序似乎是随机的。以升序打印出来的最佳方式是什么?Mapcodes=newHashMap();codes.put("A1","Aania");codes.put("X1","Abatha");codes.put("C1","Acathan");codes.put("S1","Adreenas");换句话说,上面的例子应该是这样打印出来的:A1,AaniaX1,AbathaC1,AcathanS1,Adreenas 最佳答案 您无法仅从

java - 在 Java 中限制 HashMap 的最大大小

我想限制HashMap的最大大小,以便对我正在实现的各种散列算法进行度量。我查看了HashMap的一个重载构造函数中的负载因子。HashMap(intinitialCapacity,floatloadFactor)我尝试在构造函数中将loadFactor设置为0.0f(这意味着我不希望HashMap的大小永远增长)但是javac认为这是无效的:Exceptioninthread"main"java.lang.IllegalArgumentException:Illegalloadfactor:0.0atjava.util.HashMap.(HashMap.java:177)athash

java - 在 Java 中限制 HashMap 的最大大小

我想限制HashMap的最大大小,以便对我正在实现的各种散列算法进行度量。我查看了HashMap的一个重载构造函数中的负载因子。HashMap(intinitialCapacity,floatloadFactor)我尝试在构造函数中将loadFactor设置为0.0f(这意味着我不希望HashMap的大小永远增长)但是javac认为这是无效的:Exceptioninthread"main"java.lang.IllegalArgumentException:Illegalloadfactor:0.0atjava.util.HashMap.(HashMap.java:177)athash

java - HashMap 可序列化

HashMap实现了Serializable接口(interface);所以可以序列化。我查看了HashMap的实现,并且Entry[]表被标记为transient。由于Entry[]表是存储Map全部内容的表,如果不能序列化,那么反序列化的时候Map是如何构造回来的 最佳答案 如果您查看thesource您会看到它不依赖默认的序列化机制,而是手动写出所有条目(作为键和值的交替流):/***SavethestateoftheHashMapinstancetoastream(i.e.,*serializeit)**@serialDat

java - HashMap 可序列化

HashMap实现了Serializable接口(interface);所以可以序列化。我查看了HashMap的实现,并且Entry[]表被标记为transient。由于Entry[]表是存储Map全部内容的表,如果不能序列化,那么反序列化的时候Map是如何构造回来的 最佳答案 如果您查看thesource您会看到它不依赖默认的序列化机制,而是手动写出所有条目(作为键和值的交替流):/***SavethestateoftheHashMapinstancetoastream(i.e.,*serializeit)**@serialDat

java - 基于磁盘的 HashMap

Java是否有(或有可用的库)允许我拥有基于磁盘的HashMap?它不需要是原子的或任何东西,但它将通过多个线程访问,并且如果两个线程同时访问同一个元素,则不应崩溃。有人知道吗? 最佳答案 map数据库MapDB提供由磁盘存储或堆外内存支持的并发TreeMap和HashMap。它是一个快速、可扩展且易于使用的嵌入式Java数据库引擎。它包含事务、空间高效序列化、实例缓存和透明压缩/加密等功能。它还具有只有原生嵌入式数据库引擎才能匹敌的出色性能。http://www.mapdb.org/jdbm2嵌入式键值Java数据库。https: