gpt4 book ai didi

java - 如何从 HashMap 中提取 ArrayList 并在 Java 中循环遍历它?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:19:03 28 4
gpt4 key购买 nike

我已经像这样设置了一个 HashMap:

Map<String, ArrayList<String>> theAccused = new HashMap<String, ArrayList<String>>();

... 我通过为每个名称(键)存储一个名称列表(值)来填充它。所以:

ArrayList<String> saAccused = new ArrayList<String>();
// populate 'saAccused' ArrayList
...
// done populating
theAccused.put(sAccuser, saAccused);

现在,我想查看 HashMap 中的所有条目,看看(对于每个“sAccuser”)列表“saAccused”是否包含特定名称。这是我迄今为止失败的尝试:

Set<String> setAccusers = theAccused.keySet();
Iterator<String> iterAccusers = setAccusers.iterator();
iterAccusers.next();
ArrayList<String> saTheAccused;

// check if 'sAccuser' has been accused by anyone before
for (int i = 0; i < theAccused.size(); i++) {
saTheAccused = theAccused.get(iterAccusers);

if (saTheAccused.contains(sAccuser)) {

}
iterAccusers.next();
}

... 但是我不确定 SetIterator 类是如何工作的:/问题是我没有“值”.. . 名称... 'sAccuser's... 可用的 HashMap。

简而言之,我想遍历 HashMap 并检查特定名称是否存储在任何列表中。那我该怎么做呢?如果您需要我进一步详细说明或消除任何混淆,请告诉我。

谢谢。

最佳答案

In a nutshell, I want to iterate through the HashMap and check if a specific name is stored in any of the lists. So how can I do this?

这里有两种遍历 map 的方法可能会引起您的兴趣。首先,您可以使用 entrySet() 遍历所有映射(即成对的键值关系)方法,它会让你知道每个数组列表的键是什么。或者,如果您不需要 key ,您可以简单地依次通过 values() 方法获取所有列表。使用第一个选项可能看起来像这样:

for (Map.Entry<String, ArrayList<String>> entry : theAccused.entrySet())
{
String sListName = entry.getKey();
ArrayList<String> saAccused = entry.getValue();
if (saAccused.contains(sAccuser))
{
// Fire your logic for when you find a match, which can
// depend on the list's key (name) as well
}
}

回答更广泛的问题 - Set接口(interface)只是表示一个(无序的)非重复值集合。正如您在链接的 Javadoc 中看到的那样,对于这样的无序集合,有一些您可能期望的可用方法。一个Iterator是一个遍历一些数据结构的对象,依次呈现每个元素。迭代器的典型用法如下所示:

Iterator<?> it = ...; // get the iterator somehow; often by calling iterator() on a Collection
while (it.hasNext())
{
Object obj = it.next();
// Do something with the obj
}

也就是说,检查迭代器是否未耗尽(有更多元素),然后调用 next() 方法来获取该元素。但是,由于上述模式非常常见,因此可以使用 Java 5 的 foreach loop 将其省略。 ,让您无需处理迭代器本身,正如我在第一个示例中所利用的那样。

关于java - 如何从 HashMap 中提取 ArrayList 并在 Java 中循环遍历它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3444491/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com