Tag: hashmap

比较相同值和相同键集的两个哈希映射?

如果我想知道它们中是否包含不同的键,并且如果这些键的值彼此匹配,我怎么能最好地比较两个HashMap 。 Map mapA = new HashMap(); mapA.put(“A”, “1”); mapA.put(“B”, “2”); Map mapB = new HashMap(); mapB.put(“D”, “4”); mapB.put(“A”, “1”); 将A与B进行比较时,由于键B和D不同,它应该会失败。 我怎样才能最好地比较未排序的哈希图?

反序列化后Hashmap变慢 – 为什么?

我有一个非常大的Hashmap(~250MB)。 创建它大约需要50-55秒,所以我决定将其序列化并将其保存到文件中。 从文件中读取大约需要16-17秒。 唯一的问题是查找似乎这样慢。 我一直认为hashmap是从文件读入内存的,所以与我自己创建hashmap的情况相比,性能应该是相同的,对吧? 这是我用来将hashmap读入文件的代码: File file = new File(“omaha.ser”); FileInputStream f = new FileInputStream(file); ObjectInputStream s = new ObjectInputStream(new BufferedInputStream(f)); omahaMap = (HashMap) s.readObject(); s.close(); 当我自己创建hashmap时,3亿次查找大约需要3.1秒,当我从文件中读取相同的hashmap时大约需要8.5秒。 有人知道为什么吗? 我忽略了一些明显的东西吗 编辑: 我通过使用System.nanotime()获取时间来“测量”时间,因此没有使用适当的基准测试方法。 这是代码: public class HandEvaluationTest { public static void Test() { HandEvaluation.populate5Card(); HandEvaluation.populate9CardOmaha(); Card[] player1cards = {new Card(“4s”), new Card(“2s”), new Card(“8h”), new Card(“4d”)}; […]

将CSV值转换为JAVA中的HashMap键值对

我有一个名为test.csv的csv。 我试图逐行读取csv并将值转换为哈希键值对。 这是代码: – public class Example { public static void main(String[] args) throws ParseException, IOException { // TODO Auto-generated method stub BufferedReader br = new BufferedReader(new FileReader(“test.csv”)); String line = null; HashMap map = new HashMap(); while((line=br.readLine())!=null){ String str[] = line.split(“,”); for(int i=0;i<str.length;i++){ String arr[] = str[i].split(":"); map.put(arr[0], arr[1]); } } System.out.println(map); } } […]

增加HashMap中的整数

我是否必须返回该对象,然后再添加一个新对象? 或者我可以直接增加? Integer temp = myMap.get(key); temp++; myMap.put(key, temp); 没有办法做到这一点(这不起作用): myMap.get(key)++;

什么是Java 8中String键的替代散列?

Java 8为String键提供了替代散列,以在遇到大量密钥哈希码冲突时提高性能。 任何人都可以解释它是什么以及它将如何工作?

在具有自定义类的hashmap上调用containsKey

我有一个我正在放入hashmap的Color类。 我想在hashmap上调用containsKey以确保该对象是否已存在于hashmap中 颜色类 public class Color { public String name; Color (String name) {this.name = name;} //getters setters for name } HashMap中 HashMap<Color, List> m = new HashMap<Color, List>(); Color c = new Color(“red”); m.put(c, new ArrayList()); Color c1 = new Color(“red”); System.out.println(m.containsKey(c1)); //I’d like to return this as true 由于c1 name红色。 我希望System.out返回true,因为地图中已存在的密钥c name红色 怎么能实现这一目标?

2 HashMap之间的平等

在我的类的equals()方法中,我使用私有实例HashMap变量来比较相等性。 但是,在比较它们的HashMap变量时,2个不同的对象仍然显示相等。 进一步的研究将我带到了链接: 链接在这里 。 但是,它只是说HashMap1.equals(HashMap2)无法工作的原因是因为“在没有编写自定义代码的情况下,不能对Java的数组进行相同的测试。” 我不明白这个原因。 任何人都可以指导我一个精心设计的原因吗?

从LinkedHashMap构建有序的JSON字符串

我需要按照插入的顺序使用Key / Value对,所以我选择在HashMap上使用LinkedHashMap 。 但我需要将LinkedHashMap转换为JSON字符串,其中LinkedHashMap中的顺序保留在字符串中。 但目前我通过以下方式实现: 首先将LinkedHashMap转换为JSON。 然后将JSON转换为字符串。 import java.util.LinkedHashMap; import java.util.Map; import org.json.JSONObject; public class cdf { public static void main(String[] args) { Map myLinkedHashMap = new LinkedHashMap(); myLinkedHashMap.put(“1″,”first”); myLinkedHashMap.put(“2″,”second”); myLinkedHashMap.put(“3″,”third”); JSONObject json = new JSONObject(myLinkedHashMap); System.out.println(json.toString()); } } 输出是: {“3″:”third”,”2″:”second”,”1″:”first”} . 但我想按照插入键的顺序,如下所示: {“1″:”first”,”2″:”second”,”3″:”third”} 一旦我将LinkedHashMap转换为JSON,它就会失去它的顺序(显然JSON没有顺序的概念),因此字符串也是乱序的。 现在,如何生成一个与LinkedHashMap相同的JSON字符串?

为什么ArrayList以1.5的速度增长,但对于Hashmap,它是2?

根据Sun Java Implementation,在扩展期间,ArrayList增长到3/2它的初始容量,而对于HashMap,扩展速率是双倍。 这背后的原因是什么? 根据实现,对于HashMap,容量应始终为2的幂。 这可能是HashMap行为的原因。 但在这种情况下,问题是,对于HashMap,为什么容量应始终为2的幂?

Java HashMap:如何通过索引获取密钥和值?

我试图使用HashMap将唯一的字符串映射到字符串ArrayList,如下所示: HashMap<String, ArrayList> 基本上,我希望能够通过编号访问密钥,而不是使用密钥的名称。 我希望能够访问所述密钥的值,迭代它。 我想象的是这样的: for(all keys in my hashmap) { for(int i=0; i < myhashmap.currentKey.getValue.size(); i++) { // do things with the hashmaps elements } } 是否有捷径可寻?