Tag: hashmap

从Java中删除HashMap中的重复值

我有一个重复值的地图: (“A”, “1”); (“B”, “2”); (“C”, “2”); (“D”, “3”); (“E”, “3”); 我想要地图了 (“A”, “1”); (“B”, “2”); (“D”, “3”); 你知道如何摆脱重复的价值吗? 目前,我收到’java.util.ConcurrentModificationException’错误。 谢谢。 public static void main(String[] args) { HashMap map = new HashMap(); map.put(“A”, “1”); map.put(“B”, “2”); map.put(“C”, “2”); map.put(“D”, “3”); map.put(“E”, “3”); Set keys = map.keySet(); // The set of keys in the map. Iterator […]

如何在JAXB中使用hashmap属性?

我已经花了一段时间摆弄JAXB,我需要像下面那样生成xml . . . Root元素的属性是动态的,可以来自属性文件或模板。 如上所示,进入结构的最佳方法是什么? 我正在使用动态变量的哈希映射,然后尝试使用XmlJavaTypeAdapter进行映射,我能做的最好的是 Value 在jaxb中有没有办法说使用hashmap的键作为属性名称,并将该键的值作为xml中该属性的值? 或者,如果您认为有更好的方法,我愿意接受建议。 我正在考虑使用jaxb的marshaller分别添加Root节点。 但是如果我可以使用jaxb的适配器会更好。 谢谢!

如何从Scala代码动态填充java.util.HashMap?

我是从ScalaTestunit testingjava代码,并希望在声明它的同一语句中填充java.util.HashMap。 可以在Scala中执行此操作吗?

ArrayMap与HashMap

与org.apache.myfaces.trinidad.util.ArrayMap和java.util.HashMap的主要区别是什么? ArrayMap是线程安全的吗? 在文档中提到Array在性能方面是最好的。 我不想使用hashmap或并发hashmap。 我想尝试下面的其他。 哪一个是最佳替代方案如果我考虑线程的安全性和性能? ArrayMap var= new ArrayMap();

如何从Java中的HashMap中选择一个随机密钥?

我正在使用一个大型ArrayList<HashMap> ,我会反复需要从随机HashMap中选择一个随机密钥(并用它做一些事情)。 选择随机HashMap是微不足道的,但我该如何从这个HashMap中选择一个随机密钥? 速度很重要(因为我需要做10000次并且哈希图很大),所以只需在[0,9999]中选择一个随机数k,然后在迭代器上执行.next() k次,实际上不是一个选项。 类似地,在每个随机选择上将HashMap转换为数组或ArrayList实际上不是一种选择。 请在回复之前阅读此内容。 从技术上讲,我认为这应该是可能的,因为HashMap在内部将其键存储在Entry[] ,并且从数组中随机选择很容易,但我无法弄清楚如何访问此Entry[] 。 因此,任何访问内部Entry[]想法都非常受欢迎。 其他解决方案(只要它们不占用散列图大小的线性时间)也是受欢迎的。 注意:启发式方法很好,所以如果有一种方法可以排除1%的元素(例如,由于多个填充的桶),那就没有问题了。

Java 8:使用lambda表达式初始化HashMap

我正在尝试一次声明和定义更大的哈希映射。 我是这样做的: public HashMap<Integer, Callable> opcode_only = new HashMap<Integer, Callable>() {{ put(x, y); put(x, y); }}; 但是,当我尝试在put使用lambda表达式时,我正在进行eclipse warrning / error。 这就是我在HashMap中使用lambda的方法: public HashMap<Integer, Callable> opcode_only = new HashMap<Integer, Callable>() {{ put(0, () -> { return “nop”; }); put(1, () -> { return “nothing….”; }); }}; Eclipse以逗号开头强调lambda的整个部分。 错误消息: Syntax error on token “,”, Name expected Syntax […]

使用预定义值填充哈希映射(java)

我遇到了一个我以前没有处理过的问题。 我正在为java中的数据库编写一个补丁,它基本上是转换存储在某些行中的数据。 为了做到这一点,我有一个转换表,告诉我什么值成为什么。 例如,如果我读入“RC”,“AC”,“GH” – >将值更新为“T1”。 (这些只是随机的例子,它基本上是将一个字符串转换为另一个字符串。) 我需要一种存储这些转换的好方法。 我在考虑一个hashmap:KEY,VALUE:(RC,T1)(AC,T1)(GH,T1)等依此类推。 现在,有几十个,几十个。 当补丁初始化时,填充此hashmap的一种很好的干净方法是什么?

如何合并多个散列图也可以将java中相同键的值相加

我试图合并多个哈希图也总和相同的键的值,ı想用玩具示例解释我的问题如下 HashMap m = new HashMap(); HashMap m2 = new HashMap(); m.put(“apple”, 2); m.put(“pear”, 3); m2.put(“apple”, 9); m2.put(“banana”, 6); 我试过putall m.putAll(M2); 输出如下{banana = 6,apple = 9,pear = 3} 但它的结果并不适用于这个问题。 我希望输出为 {banana = 6,apple = 11,pear = 3} 怎么能在java中得到这个结果?

性能:从HashMap.values()创建一个ArrayList

问题是从HashMap.values()集合创建ArrayList的成本是多少? 或者单独创建值Collection? 假设Map.size()> 100k。 对象也可以一直保存在ArrayList(而不是HashMap)中,这对其他部分有影响(元素的修改,易于按键)。 ArrayList用于迭代每个第n个元素。 (这就是为什么不能直接使用值集合)。 在迭代期间不进行任何修改。

为什么resize的方式实现?

在添加新的键值对时,我有几个关于重建HashMaps问题。 我将根据这些事实提出问题(它们适用于Oracle JVM,不确定它们是否适用于其他JVM): 每次当HashMap大于阈值(阈值= loadFactor * numberOfEntries)时,resize重建HashMap以使内部表数组更大。 新创建的条目放在哪个桶中无关紧要 – 地图仍然会变大。 即使所有条目都进入一个桶(即它们的密钥’ hashCode()返回相同的数字)。 删除数据时, HashMap不会缩小。 即使从HashMap中删除了所有键,它的表的内部大小也不会改变。 现在的问题是: 这些事实是否正确? 如果是,那么: 为什么resize这样实现? 即使显然没有必要,是否有意扩大内桌? 还是个bug? 它为什么不收缩?