草庐IT

java - 在 Java 中打印 HashMap

我有一个HashMap:privateHashMapexample=newHashMap();现在我想遍历所有值并打印它们。这是我写的:for(TypeValuename:this.example.keySet()){System.out.println(name);}它似乎不起作用。有什么问题?编辑:另一个问题:这个集合是从零开始的吗?我的意思是如果它有1个键和值,大小是0还是1? 最佳答案 keySet()只从你的HashMap返回一组键,你应该迭代这个键集并使用这些键从HashMap中获取值。在您的示例中,HashMap键的类

java - HashMap - 获取第一个键值

以下是HashMap中包含的值statusName{Active=33,RenewalsCompleted=3,Application=15}获取第一个Key(即Active)的Java代码ObjectmyKey=statusName.keySet().toArray()[0];我们如何收集第一个键“值”(即33),我想将“键”和“值”存储在单独的变量中。 最佳答案 你可以试试这个:Mapmap=newHashMap();Map.Entryentry=map.entrySet().iterator().next();Stringke

java - Java 有反向查找的 HashMap 吗?

我有以“键-键”格式而非“键-值”形式组织的数据。它就像一个HashMap,但我需要在两个方向上进行O(1)查找。这种类型的数据结构是否有名称,Java的标准库中是否包含类似的内容?(或者可能是ApacheCommons?)我可以编写自己的类,它基本上使用两个镜像map,但我宁愿不重新发明轮子(如果这已经存在,但我只是没有寻找正确的术语)。 最佳答案 JavaAPI中没有这样的类。您想要的ApacheCommons类将成为BidiMap的实现之一.作为一名数学家,我将这种结构称为双射。

Java HashMap 性能优化/替代

我想创建一个大的HashMap,但是put()性能不够好。有什么想法吗?欢迎其他数据结构建议,但我需要JavaMap的查找功能:map.get(key)就我而言,我想创建一个包含2600万个条目的map。使用标准的JavaHashMap插入2-3百万次后,put速率变得非常慢。另外,有谁知道对key使用不同的哈希码分布是否有帮助?我的哈希码方法:byte[]a=newbyte[2];byte[]b=newbyte[3];...publicinthashCode(){inthash=503;hash=hash*5381+(a[0]+a[1]);hash=hash*5381+(b[0]+b

java - HashMap 的构建器

Guava为我们提供了很好的Java类型工厂方法,例如Maps.newHashMap()。但是还有javaMaps的构建器吗?HashMapm=Maps.BuildHashMap.put("a",1).put("b",2).build(); 最佳答案 HashMaps没有这样的东西,但是你可以使用builder创建一个ImmutableMap:finalMapm=ImmutableMap.builder().put("a",1).put("b",2).build();如果您需要一个可变映射,您可以将它提供给HashMap构造函数。f

Java:如何将 HashMap<String, Object> 转换为数组

我需要转换HashMap到一个数组;谁能告诉我它是怎么做的? 最佳答案 hashMap.keySet().toArray();//returnsanarrayofkeyshashMap.values().toArray();//returnsanarrayofvalues编辑需要注意的是,两个数组的排列顺序可能不一样,当需要键/值对时,请参阅oxbow_lakes答案以获得更好的迭代方法。 关于Java:如何将HashMap转换为数组,我们在StackOverflow上找到一个类似的问题

java - HashMap 获取/放置复杂度

我们习惯说HashMapget/put操作是O(1)。但是,这取决于哈希实现。默认对象哈希实际上是JVM堆中的内部地址。我们确定声称get/put是O(1)就足够了吗?可用内存是另一个问题。正如我从javadocs中了解到的,HashMap负载因子应该是0.75。如果JVM内存不足,负载因子超过限制怎么办?所以,看起来O(1)是不能保证的。这有意义还是我错过了什么? 最佳答案 这取决于很多事情。它通常O(1),有一个像样的散列,它本身是恒定的时间......但是你可能有一个需要很长时间来计算的散列,并且如果有是HashMap中返回相

java: HashMap<String, int> 不工作

HashMap似乎不起作用,但HashMap确实有效。任何想法为什么? 最佳答案 您不能将原始类型用作Java中的泛型参数。改为使用:MapmyMap=newHashMap();与auto-boxing/unboxing代码差别不大。自动装箱意味着您可以编写:myMap.put("foo",3);代替:myMap.put("foo",newInteger(3));自动装箱意味着第一个版本隐式转换为第二个版本。自动拆箱意味着你可以写:inti=myMap.get("foo");代替:inti=myMap.get("foo").intV

java - 按值对 HashMap 进行排序

这个问题在这里已经有了答案:SortaMapbyvalues(63个回答)关闭6年前。我需要根据存储在其中的值对我的HashMap进行排序。HashMap包含存储在手机中的联系人姓名。我还需要在对值进行排序后立即自动对键进行排序,或者您可以说键和值绑定(bind)在一起,因此值的任何更改都应反射(reflect)在键中。HashMapmap=newHashMap();map.put(1,"froyo");map.put(2,"abby");map.put(3,"denver");map.put(4,"frost");map.put(5,"daisy");需要的输出:2,abby;5,d

java - 向 HashSet/HashMap 添加重复值是否会替换先前的值

请考虑以下代码:HashSeths=newHashSet();hs.add("hi");--(1)hs.add("hi");--(2)hs.size()将给出1,因为HashSet不允许重复,因此只会存储一个元素。我想知道如果我们添加了重复元素,那么它是替换前一个元素还是根本不添加它?另外,对于同样的情况,使用HashMap会发生什么? 最佳答案 在HashMap的情况下,它将旧值替换为新值。在HashSet的情况下,则该项目未插入。 关于java-向HashSet/HashMap添加重