java stream常用的方法(list转map)

几个常用的list转map的方法

public static void main(String[] args) {
        List> list = new ArrayList<>();
        list.add(new HashMap() {{
            put("name", "test11");
            put("type", "0");
        }});
        list.add(new HashMap() {{
            put("name", "test22");
            put("type", "0");
        }});
        list.add(new HashMap() {{
            put("name", "test33");
            put("type", "1");
        }});

        //list转map string
        Map mapstring = list.stream().collect(Collectors.toMap(
                item -> item.get("type"),
                item -> item.get("name"),
                (o1, o2) -> o2)  //当key值一致时取后者
        );
        System.out.println("list转map string: " +JSONObject.toJSONString(mapstring));
		//执行结果: {"0":"test22","1":"test33"}

        //list转map map
        Map> map = list.stream().filter(Objects::nonNull).collect(Collectors.toMap(
                item -> item.get("type"),
                item -> item,
                (o1, o2) -> o2));
        System.out.println("list转map: " +JSONObject.toJSONString(map));
		//执行结果:  {"0":{"name":"test22","type":"0"},"1":{"name":"test33","type":"1"}}

        //list转 maplist
        Map>> map1 = list.stream().filter(Objects::nonNull).collect(Collectors.groupingBy(item -> item.get("type")));
        System.out.println("map分组: "+ JSONObject.toJSONString(map1));
        //执行结果: {"0":[{"name":"test11","type":"0"},{"name":"test22","type":"0"}],"1":[{"name":"test33","type":"1"}]}
        
        //统计个数
        Map map2 = list.stream().collect(Collectors.groupingBy(item -> item.get("type"), Collectors.counting()));
        System.out.println("统计个数: "+ JSONObject.toJSONString(map2));
        //执行结果:  {"0":2,"1":1}
    }

你可能感兴趣的:(java,list,开发语言)