草庐IT

java - HashMap 中的部分搜索

我需要创建电话簿之类的东西。它包含名称和编号。现在当我输入字母匹配列表时应该返回。对于下面给出的示例,当我键入H时,应返回包含Harmer、Harris、Hawken、Hosler的列表。当键入Ha时,应返回仅包含Harmer、Harris、Hawken的列表。MapnameNum=newHashMap();nameNum.put("Brown","+1236389023");nameNum.put("Bob","+1236389023");nameNum.put("Harmer","+1236389023");nameNum.put("Harris","+1236389023");n

java - 从 hashmap 存储和检索 ArrayList 值

我有以下类型的HashMapHashMap>map=newHashMap>();存储的值是这样的:mango|0,4,8,9,12apple|2,3grapes|1,7peach|5,6,11我想使用迭代器或任何其他方式以最少的代码行存储和获取这些整数。我该怎么做?编辑1数字是随机添加的(不是一起),因为键与相应的行匹配。编辑2如何在添加时指向数组列表?在map.put(string,number);行中添加新数字18时出现错误 最佳答案 我们的变量:Map>map=newHashMap>();存储:map.put("mango",

java - map 中 HashMap 的 ImmutableMap.of() 解决方法?

有一些实用方法可以创建ImmutableMap,例如Immutable.of(Key,value)及其重载。但是Maps类中的HashMap或LinkedHashMap不存在这样的方法。有没有更好的方法来做到这一点,或者Guava假设这样的映射始终是一个常量映射,并且ImmutableMap是最好的选择,不需要为HashMap. 最佳答案 你为什么要那些常规的HashMap或LinkedHashMap?你可以这样做:Mapmap=Maps.newHashMap();map.put(key,value);ImmutableMap的问题

java - HashMap 与 LinkedHashMap 在值迭代中的性能()

HashMap和LinkedHashMap通过values()函数进行遍历有性能差异吗? 最佳答案 我认为LinkedHashMap的遍历速度必须更快,因为其Iterator中的nextEntry实现更好原因如下:让我们从values实现一步一步来。values的HashMap实现是这样的:publicCollectionvalues(){Collectionvs=values;return(vs!=null?vs:(values=newValues()));}LinkedHashMap扩展自HashMap并继承相同的实现。区别在于

Java HashMap : How to get a key and value by index?

我正在尝试使用HashMap将唯一字符串映射到字符串ArrayList,如下所示:HashMap>基本上,我希望能够通过数字访问key,而不是使用key的名称。我希望能够访问所述键的值,对其进行迭代。我在想象这样的事情:for(allkeysinmyhashmap){for(inti=0;i有没有简单的方法可以做到这一点? 最佳答案 如果您真的只想要第一个键的值,这是一般解决方案ObjectfirstKey=myHashMap.keySet().toArray()[0];ObjectvalueForFirstKey=myHashMa

java - 如果查找键是字符串,则 EnumMap 或 HashMap

我试图权衡使用EnumMap而不是HashMap的利弊。因为,我将一直使用String进行查找,看来带有String键的HashMap将是正确的选择。但是,EnumMap似乎是更好的设计,因为它传达了我将键限制为特定枚举的意图。想法?这是一个虚构的例子,展示了我将如何使用Map:enumAnimalType{CAT,DOG}interfaceAnimal{}classCatimplementsAnimal{}classDogimplementsAnimal{}publicclassAnimalFactory{privatestaticfinalMapenumMap=newEnumMap

java - 为什么在 HashMap 中有空值或空键很有用?

Hashtable不允许空键或空值,而HashMap允许空值和1个空键。问题:为什么会这样?在HashMap中有这样的键和值有什么用? 最佳答案 1.Whyisthisso?HashMap比Hashtable更新,并修复了它的一些限制。我只能猜测设计师的想法,但以下是我的猜测:Hashtable通过在每个键上调用hashCode来计算每个键的哈希值。如果键为空,这将失败,因此这可能是不允许空作为键的原因。如果键不存在,方法Hashtable.get将返回null。如果null是一个有效值,那么null是否意味着该键存在但值为null

java - 比较两个 HashMap 是否具有相同的值和相同的键集?

我怎样才能最好地比较两个HashMap,如果我想知道它们是否包含不同的键,以及这些键的值是否相互匹配。MapmapA=newHashMap();mapA.put("A","1");mapA.put("B","2");MapmapB=newHashMap();mapB.put("D","4");mapB.put("A","1");比较A和B时,应该会因为B和D的key不同而失败。如何最好地比较未排序的HashMap? 最佳答案 只需使用:mapA.equals(mapB);Comparesthespecifiedobjectwitht

java - HashMap - contains 和 get 方法不应该一起使用

我在一次采访中得到了以下问题。我得到了一个这样的字符数组:char[]characters={'u','a','u','i','o','f','u'};我需要获取每个字符的不同字符和计数:u=3a=1i=1o=1f=1所以我用Java回答了以下代码:HashMapmap=newHashMap();inti=1;for(charc:characters){if(map.containsKey(c)){intval=map.get(c);map.put(c,++val);}elsemap.put(c,i);}面试官是一名解决方案架构师。他问我为什么在这里同时使用containsKey()和

java - Hashmap 并发问题

我有一个Hashmap,出于速度原因,我不想要求锁定。假设我不介意陈旧的数据,同时更新和访问它会导致任何问题吗?我的访问是获取,而不是遍历它,删除是更新的一部分。 最佳答案 是的,这会导致重大问题。一个例子是向HashMap添加值时可能发生的情况:这可能导致表的重新哈希,如果在另一个线程迭代冲突列表(哈希表“桶”)时发生这种情况,则该线程可能错误地找不到map中存在的键。HashMap对于并发使用是明确不安全的。使用ConcurrentHashMap而是。 关于java-Hashmap并