利用Map的key进行迭代,根据条件返回HashMap,需要收集下面代码中的返回map。
尝试将下面的java代码转换为java 8
for (String key : sectionsJson.keySet()) {
Map<String, Object> section = (Map<String, Object>) sectionsJson.get(key);
if (index == (Integer) section.get(SECTION_FIELD_KEY_INDEX)) {
section.put(SECTION_FIELD_KEY_SECTION_KEY, key);
return section;
}
}
任何建议。
最佳答案
看起来您想生成一个最多只有一个条目的Map
。
Map<String,Object> map =
sectionsJson.entrySet()
.stream()
.filter(e -> {
Map<String, Object> section = e.getValue ();
return index == (Integer) section.get(SECTION_FIELD_KEY_INDEX);
}
.map(e -> new SimpleEntry<> (SECTION_FIELD_KEY_SECTION_KEY, e.getKey ()))
.limit(1)
.collect(Collectors.toMap(Map.Entry::getKey,Map.Entry::getValue));
看起来你的原始代码更简单。
也许您可以简单地搜索所需的 key :
String value =
sectionsJson.entrySet()
.stream()
.filter(e -> {
Map<String, Object> section = e.getValue ();
return index == (Integer) section.get(SECTION_FIELD_KEY_INDEX);
}
.map(Map.Entry::getKey)
.findFirst()
.orElse(null);
由于您生成的 Map
(至多)具有单个值和常量键,因此该值是 Stream 管道应该搜索的唯一数据。
关于java - 从 Stream<T> 收集 HashMap<String,Object>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58746037/