[英]How can I iterate through a hashset within a hashmap?
我正在尝试遍历包含 8 个条目的哈希图。 然而,这些条目之一是其中包含 2 个对象的哈希集。 我需要遍历哈希集以从中获取值。
代码的第一部分有效,我遍历哈希图并查找我需要的键“气球”。 我需要帮助来遍历哈希集以从 2 个气球对象中检索详细信息。
List<PartyItem> myPartyList = new ArrayList<>();
Map<String, Object> types = myPartyList .getPartyItems();
for (Map.Entry<String, Object> entry : types.entrySet()) {
if (StringUtils.contains(entry.getKey().toString(), "balloon")) {
//This is where I need to loop through the balloon hashset to get the entries and values from within.
myPartyList .add(balloon);
然后我希望能够从 myPartyList 中获取键和值以将它们分配给我的代码中的变量。
谢谢
测试一个值是否是一个Set
,如果是,则将所有项目添加到您的列表中。
if (StringUtils.contains(entry.getKey().toString(), "balloon")
&& entry.getValue() instanceof Set) {
myPartyList.addAll((Set)entry.getValue());
}
不是遍历条目,而是遍历键,当您找到气球时,请获取哈希集以遍历它。
for(String key: types.keySet()){
if(StringUtils.contains(key, "balloon")){
for(Object object: types.get(key)){
//do what you need with object
}
}
}
你可以像这样迭代:
for(String key: Map.keySet()){
if(StringUtils.contains(key, "balloon")){
Iterator<String> it = hashMap.get("balloon").iterator();
while(it.hasNext()){
// your code here
}
}
}
通常,您将哈希映射构建为 <key, value> 并通过相应的键访问您的值。 但它们必须完全匹配。 在您的情况下,您的哈希图如下所示:
Map<String, Object> partyItems = myPartyList.getPartyItems();
// or maybe even
Map<String, PartyItem> partyItems = myPartyList.getPartyItems();
获取价值就像这样简单:
Object partyItem = partyItems.get("baloon");
如果你不知道,如果你的paryItems包含你的关键字的值baloon
,你可以检查第一:
if (partyItems.contains("baloon")) {
Object partyItem = partyItems.get("baloon");
}
如果您正在寻找关键匹配baloon
的一部分:
List<PartyItem> myFilteredPartyItems = partyItems.entrySet().stream()
.filter(e -> e.getKey().contains("baloon"))
.collect(Collectors.toList()))
这称为面向流的编程(查看Java Stream API ),如果您至少运行 Java 8,则可以使用它们。 它的作用是将 List 的条目转换为流,然后删除键中不包含baloon
所有内容,并将未删除的结果流转换回列表。
您还可以在此处找到有关如何在 Java 中使用流的信息丰富的教程。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.