Tag: hashmap

如何使用自定义键类型使HashMap正常工作?

我认为我的问题很简单,但我找不到解决方案所以我决定在这里问一下。 我需要的是使用这样的自定义Key类型创建一个HashMap : HashMap<Pair, StrategyPoint> myMap = new HashMap<Pair, StrategyPoint> (); 但是我在这里遗漏了一些东西,因为HashMap停止正常工作。 首先,Key变得不唯一,并且可以在keySet找到具有相同值的Pair的不同实例。 包含键function也不像我想的那样工作:)。 我明显错过了一些东西,更有可能我应该以某种方式定义一种方法来比较我的Pair类中的实例。 但是我尝试在我的Pair类中使用compareTo实现Comparable,但它仍然无效。 有什么建议么? 我的原始代码有点混乱,读起来不友好,所以我举一个例子来说明我的问题。 这是代码: HashMap<Pair, StrategyPoint> myMap = new HashMap<Pair, StrategyPoint> (); Pair myPair = new Pair(2,2); StrategyPoint myPoint= new StrategyPoint(2, 2, 5, 5, false); myMap.put(myPair, myPoint); Pair searcher = new Pair (0,0); searcher.setFirst(2); searcher.setSecond(2); System.out.println(myMap.containsKey(searcher)); System.out.println(myMap.containsKey(myPair)); 执行的结果是: false true […]

这些初始化HashMap的方法有什么区别?

我为我的程序使用了HashMap,它工作正常,但我不明白这些HashMap初始化之间的区别。 假设我正在实现一个HashMap,其中一个字符作为键,一个整数作为值。 这些有什么区别? HashMap alphabet1 = new HashMap(); HashMap alphabet1 = new HashMap(); HashMap alphabet1 = new HashMap(); Map alphabet1 = new HashMap(); HashMap alphabet1 = new HashMap(); HashMap alphabet1 = new HashMap(); Map alphabet1 = new HashMap();

Java 8 hashmap高内存使用率

我使用散列图存储QTable来实现强化学习算法。 我的hashmap应该存储15000000个条目。 当我运行算法时,我看到进程使用的内存超过1000000K。 当我计算内存时,我预计它的使用量不会超过530000K。 我试着写一个例子,我得到了相同的高内存使用率: public static void main(String[] args) { HashMap map = new HashMap(16_000_000, 1); for(int i = 0; i < 15_000_000; i++){ map.put(i, i); } } 我的记忆力: 每个入口集都是32个字节 容量为15000000 HashMap实例使用:32 * SIZE + 4 * CAPACITY memory =(15000000 * 32 + 15000000 * 4)/ 1024 = 527343.75K 我的记忆计算错在哪里?

Java HashMap关联多维数组无法创建或添加元素

好的,所以我花了几个小时试图围绕这个Java中的HashMap概念,但我只是无法解决它。 我看了很多教程,但似乎都没有解决我的确切要求,我无法让它工作。 我试图用Java(或类似的东西)创建一个关联的多维数组,这样我就可以使用字符串键保存到数组并从数组中检索。 这就是我在PHP中的表现,并最好地解释了我想要做的事情: //loop one – assign the names myArray[‘en’][‘name’] = “english name”; myArray[‘fr’][‘name’] = “french name”; myArray[‘es’][‘name’] = “spanish name”; //loop two – assign the description myArray[‘en’][‘desc’] = “english description”; myArray[‘fr’][‘desc’] = “french description”; myArray[‘es’][‘desc’] = “spanish description”; //loop three – assign the keywords myArray[‘en’][‘keys’] = “english keywords”; myArray[‘fr’][‘keys’] = “french keywords”; myArray[‘es’][‘keys’] […]

如何在嵌套HashMap中放入/获取值

我想创建一个嵌套的HashMap,它将采用float类型的两个键,并给出Integer类型的值。 public static HashMap<Float, HashMap> hashX = new HashMap<Float,HashMap>(); 有没有像普通HashMap那样放置/获取值的简单方法 hashX.put(key, value); hashX.get(key); 或者它是一种必须使用的更复杂的方法? 我已经在网上搜索了一个解决方案,但我发现很难找到适用于我的解决方案。 任何帮助,将不胜感激!

Java HashMap可以工作,但containsKey没有

我试图在HashMap中找到一个键。 我可以使用’get’打印所选键,但是当我在if语句中使用’containsKey’时,找不到它。 我知道密钥存在于Map中,但它一直返回false。 人们有什么想法? 我的代码: public static boolean checkLowerStructuralSupport(Location location) { boolean hasSupport = false; Location supportingLocation = new Location(location.getX(), location.getY(), location.getZ() – 1); System.out.println(_levels.get(supportingLocation.getZ()).getLevelSites2().get(supportingLocation)); //works if (_levels.get(supportingLocation.getZ()).getLevelSites2().containsKey(supportingLocation)) { hasSupport = true; } else { hasSupport = false; } return hasSupport; } 以下是Location类的代码: public class Location { protected int _x; protected int _y; protected int […]

如何读取和写入文件的HashMap?

我有以下HashMap : HashMap fileObj = new HashMap(); ArrayList cols = new ArrayList(); cols.add(“a”); cols.add(“b”); cols.add(“c”); fileObj.put(“mylist”,cols); 我将它写入文件如下: File file = new File(“temp”); FileOutputStream f = new FileOutputStream(file); ObjectOutputStream s = new ObjectOutputStream(f); s.writeObject(fileObj); s.flush(); 现在我想将这个文件读回HashMap,其中Object是一个ArrayList。 如果我只是这样做: File file = new File(“temp”); FileInputStream f = new FileInputStream(file); ObjectInputStream s = new ObjectInputStream(f); fileObj = (HashMap)s.readObject(); s.close(); […]

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

我需要复制HashMap<Integer, List >但是当我在副本中更改某些内容时,我希望原始内容保持不变。 即,当我从副本中删除List中的某些内容时,它将保留在原始List中的List中。 如果我理解正确,这两个方法只会创建浅层副本,这不是我想要的: mapCopy = new HashMap(originalMap); mapCopy = (HashMap) originalMap.clone(); 我对吗? 有没有比这更好的方法来迭代所有键和所有列表项并手动复制它?

在迭代期间更改HashMap键

是否可以在迭代期间更改同一个HashMap实例的键? 因为映射条目集没有方法entry.setKey()。 现在我能想到的是创建另一个HashMap … MultipartParsingResult parsingResult = parseRequest(request); Map mpParams = parsingResult.getMultipartParameters(); Map mpParams2 = new HashMap(); Iterator<Entry> it = mpParams.entrySet().iterator(); while (it.hasNext()) { Entry entry = it.next(); String name = entry.getKey(); if (name.startsWith(portletNamespace)) { mpParams2.put(name.substring(portletNamespace.length(), name.length()), entry.getValue()); } else { mpParams2.put(name, entry.getValue()); } }

在主表DataTable中显示Hashmap键和值

我正在尝试在DataTable中显示Hashmap,这是我正在尝试做的:我将有一些产品的选择菜单,数量的输入文本,添加产品的“ajaxified”添加按钮它的数量到地图,以及一个提交按钮,显示一个包含DataTable的摘要对话框,其中包含两列:Product Name和Quantitiy。 我的Hashmap是 Map myMap = new HashMap(); 对于ajaxified按钮和所有这些第一步,他们正在为我工​​作,我已经设置了所有内容并且地图正确地填充了剩下的所有数据。 提前致谢。