我有一个哈希映射类型数组列表:
public static ArrayList<HashMap<String, String>> mylist = new ArrayList<HashMap<String, String>>();
它的一些ID和名称如下:
这是用于循环的代码:
for (HashMap<String, String> map : mylist)
for (Entry<String, String> entry : map.entrySet())
if(entry.getValue().contains(typedText)){
map1 = new HashMap<String, String>();
map1.put("id", entry.getKey());
map1.put("name", entry.getValue());
mylist1.add(map1);
}
问题是在这一行中:
for (Entry<String, String> entry : map.entrySet())
map.entrySet()
显示正确的ID和Name,如下所示:
但只有名称可用与条目:
entry。getKey()
总是返回文本“name”,它是键和项。getValue()
返回值“Katie Bailey”。
我的问题是,为什么我不能在进入时拿到钥匙。getKey()?为什么每次迭代都要用“name”作为键?
问题是map只需要密钥的唯一值,因此,如果某个密钥存在于map中,则无法将其重新插入到map中,这将导致您获得第一个匹配值。
因此,你必须提供不同的钥匙来替换。使用诸如“id”或“name”之类的字符串作为键意味着键不会改变,值也不会改变。
请参阅Java HashMap API
我怀疑你被调试器对地图的可视化弄糊涂了。当它展示这个的时候:
{id=2990511, name=Katie Bailey}
这表明你的地图有两个条目——一个是键为id
且值为“2990511”
,另一个是键为name
且值为“Katie Bailey”
。
然后循环遍历所有这些条目,如果值匹配,则将两个条目添加到第二个映射中:一个条目带有键id
和一个值,该值是您正在查看的条目的键,第二个条目带有键name
和一个值,该值是您正在查看的条目的值。你没有使用整个原始地图——你只是使用了那个条目。
因此,如果你匹配name=Katie Bailey
的条目,你最终会得到一个包含两个条目的新地图:
{id=name, name=Katie Bailey}
目前还不清楚您期望的是什么,但是您显示的结果对您的代码非常有意义。
我怀疑你真的想要这样的东西:
for (HashMap<String, String> map : mylist) {
String name = map.get("name");
if (name.contains(typedText)) {
// Create a copy of the whole map
mylist1.add(new HashMap<String, String>(map));
}
}
如果你有固定的密钥,你至少应该考虑创建一个类型来封装数据——例如<代码>人>代码>类,使用<代码> GETNAME()/<代码>和<代码> GETIDER()/<代码>方法。
问题内容: 我目前正在尝试制作一个将动词与西班牙语共轭的程序。我创建了一个哈希表,其中包含一个键和对象Verb的实例化。键是具有动词不定式形式的字符串(例如“ hablar”)。这是到目前为止我对哈希映射的代码: HashMap中每个动词的键都基于动词的不定式形式。例如,字符串“ hablar”是西班牙语动词的键。Verb类具有一个名为getInfinitive()的方法,该方法返回一个字符串
尝试通过用数字替换重复字符来压缩字符串(例如,字符串将变成)。我试图使用链接哈希图来解决这个问题,因为需要保留输入顺序,但是我创建的计数器似乎没有正确地递增。任何见解都将不胜感激。
输入是一个哈希映射,比如 我想写一个方法,返回类型A的列表,其中有键,值属性与字符串类型,和键值从hashmap。 如何让它成为现实?
我不太熟悉Java流收集器框架,我想解决现实世界中的问题,并想使用流。 下面是实际问题的简化假设场景。 我有一个接口,它的实现返回一个
我正试图让我的头脑围绕着一个哈姆特的细节。我会用Java自己实现一个,只是为了理解。我熟悉尝试,我想我得到了HAMT的主要概念。 基本上, 两种类型的节点: null null 我不太明白的部分是碰撞检测和缓解。在链接的论文中,他暗示了这一点: 然后将现有键插入到新的子哈希表中,并添加新键。每使用5个以上的散列比特,冲突的概率就减少1/32倍。偶尔,可能会消耗整个32位哈希,必须计算一个新的哈希来
> 阅读算法书,需要掌握哈希表的概念。他们写了关于使用单独链接的散列和使用线性探测的散列。我猜Java的HashMap是一个哈希表,因此我想知道HashMaps使用什么机制(链接或探测)? 我需要实现最简单的HashMap与get,put,删除。你能给我指出好的材料来阅读吗? 当用于映射的惟一键是自定义对象时,我们需要在相应的类型中实现hashCode()函数。我做得对吗?或者什么时候需要hash