Java 8:如何使用流从Java 8中的HashMap的ArrayList中提取HashMap?

Bibek Kr。巴扎兹:

查询数据库时,我得到以下示例结果:

[{ name : name1, rollno: rollno1 }, { name : name2, rollno: rollno2 } ]

我想使用Java 8流将此哈希表列表转换为单个哈希表。我尝试使用Collectors.toMap(),但不确定如何将rollNo称为键,将hashmap称为toMap方法中的值。

预期输出:

{ rollno1 : { name : name1, rollno: rollno1 } , rollno2 : { name : name2, rollno: rollno2 } }

有什么办法吗?

将不胜感激。谢谢

MichałMarcinkowski:

这是完整的示例,该如何做

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.stream.Collectors;

public class Main {

    public static void main(String[] args) {
        List<HashMap<String, String>> input = new ArrayList<>();
        HashMap<String, String> subinput1 = new HashMap<>();
        subinput1.put("name", "name1");
        subinput1.put("rollno", "rollno1");
        input.add(subinput1);
        HashMap<String, String> subinput2 = new HashMap<>();
        subinput2.put("name", "name2");
        subinput2.put("rollno", "rollno2");
        input.add(subinput2);
        HashMap<String, HashMap<String, String>> result = (HashMap<String, HashMap<String, String>>) input.stream()
                .collect(Collectors.toMap(v -> (String) v.get("rollno"), e -> e));
        System.out.println(result);
    }
}

它遍历HashMap的集合,获取应将其存储在结果HashMap中的键,然后创建一个Maps Map,其中键是输入映射中的“ rollno”,而值是输入映射本身。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章