java - 从 Stream<T> 收集 HashMap<String,Object>

标签 java

利用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/

相关文章:

java - 自定义按键事件

java - 用代码计算数字问题中零的数量

java - 扫描仪与 BufferedReader

java - new WordDocument() com.independentsoft 出现异常

java - 将 HashMap 作为 FitNesse 中的参数传递

Java 将字符串转换为 SHA1

java - Prim的算法在Java中的实现

java - 如何使用onSavedInstance?

java - Maven 编译无提示地失败 - Unresolved 编译问题

java - ReSTLet 客户端卡住 HTTPS 请求