
描述:
取List集合中两个字段,将一两个字段作为key、value,利用Steam流转为map集合,当key相同时,将value转为List集合。
代码1:
package com.demo;
import cn.hutool.json.JSONUtil;
import com.google.common.collect.Lists;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class AppDemo {
public static void main(String[] args) {
List list = Lists.newArrayList(1, 7, 2, 5, 3, 4, 5, 1, 3, 6, 7);
Map> map = list.stream().collect(Collectors.toMap(key -> key, value -> Lists.newArrayList(value),
(List newValueList, List oldValueList) -> {
oldValueList.addAll(newValueList);
return oldValueList;
}));
System.out.println(JSONUtil.toJsonStr(map));
}
}
结果:
{"1":[1,1],"2":[2],"3":[3,3],"4":[4],"5":[5,5],"6":[6],"7":[7,7]}
代码2:
package com.demo;
import cn.hutool.json.JSONUtil;
import com.google.common.collect.Lists;
import lombok.Data;
import java.util.*;
import java.util.stream.Collectors;
public class AppDemo {
public static void main(String[] args) {
List
结果:
{"0":[1],"1":[2,3],"2":[4],"3":[5,6]}
{"0":[{"parentId":0,"name":"菜单1","id":1},{"parentId":0,"name":"菜单1","id":1},{"parentId":0,"name":"菜单1","id":1},{"parentId":0,"name":"菜单1","id":1},{"parentId":0,"name":"菜单1","id":1},{"parentId":0,"name":"菜单1","id":1},{"parentId":0,"name":"菜单1","id":1},{"parentId":0,"name":"菜单1","id":1},{"parentId":0,"name":"菜单1","id":1},{"parentId":0,"name":"菜单1","id":1}],"1":[{"parentId":1,"name":"菜单3","id":3},{"parentId":1,"name":"菜单2","id":2},{"parentId":1,"name":"菜单3","id":3},{"parentId":1,"name":"菜单2","id":2},{"parentId":1,"name":"菜单3","id":3},{"parentId":1,"name":"菜单2","id":2},{"parentId":1,"name":"菜单3","id":3},{"parentId":1,"name":"菜单2","id":2},{"parentId":1,"name":"菜单3","id":3},{"parentId":1,"name":"菜单2","id":2},{"parentId":1,"name":"菜单3","id":3},{"parentId":1,"name":"菜单2","id":2},{"parentId":1,"name":"菜单3","id":3},{"parentId":1,"name":"菜单2","id":2},{"parentId":1,"name":"菜单3","id":3},{"parentId":1,"name":"菜单2","id":2},{"parentId":1,"name":"菜单3","id":3},{"parentId":1,"name":"菜单2","id":2},{"parentId":1,"name":"菜单3","id":3},{"parentId":1,"name":"菜单2","id":2}],"2":[{"parentId":2,"name":"菜单4","id":4},{"parentId":2,"name":"菜单4","id":4},{"parentId":2,"name":"菜单4","id":4},{"parentId":2,"name":"菜单4","id":4},{"parentId":2,"name":"菜单4","id":4},{"parentId":2,"name":"菜单4","id":4},{"parentId":2,"name":"菜单4","id":4},{"parentId":2,"name":"菜单4","id":4},{"parentId":2,"name":"菜单4","id":4},{"parentId":2,"name":"菜单4","id":4}],"3":[{"parentId":3,"name":"菜单6","id":6},{"parentId":3,"name":"菜单5","id":5},{"parentId":3,"name":"菜单6","id":6},{"parentId":3,"name":"菜单5","id":5},{"parentId":3,"name":"菜单6","id":6},{"parentId":3,"name":"菜单5","id":5},{"parentId":3,"name":"菜单6","id":6},{"parentId":3,"name":"菜单5","id":5},{"parentId":3,"name":"菜单6","id":6},{"parentId":3,"name":"菜单5","id":5},{"parentId":3,"name":"菜单6","id":6},{"parentId":3,"name":"菜单5","id":5},{"parentId":3,"name":"菜单6","id":6},{"parentId":3,"name":"菜单5","id":5},{"parentId":3,"name":"菜单6","id":6},{"parentId":3,"name":"菜单5","id":5},{"parentId":3,"name":"菜单6","id":6},{"parentId":3,"name":"菜单5","id":5},{"parentId":3,"name":"菜单6","id":6},{"parentId":3,"name":"菜单5","id":5}]}
{"0":"菜单1","1":"菜单2","2":"菜单4","3":"菜单5"}
{"0":"菜单1","1":"菜单3","2":"菜单4","3":"菜单6"}
{"0":{"parentId":0,"name":"菜单1","id":1},"1":{"parentId":1,"name":"菜单3","id":3},"2":{"parentId":2,"name":"菜单4","id":4},"3":{"parentId":3,"name":"菜单6","id":6}}
{"0":{"parentId":0,"name":"菜单1","id":1},"1":{"parentId":1,"name":"菜单3","id":3},"2":{"parentId":2,"name":"菜单4","id":4},"3":{"parentId":3,"name":"菜单6","id":6}}
关于 Collectors.toMap 方法
Collectors.toMap 有三个重载方法:
toMap(Function super T, ? extends K> keyMapper, Function super T, ? extends U> valueMapper); toMap(Function super T, ? extends K> keyMapper, Function super T, ? extends U> valueMapper, BinaryOperator mergeFunction); toMap(Function super T, ? extends K> keyMapper, Function super T, ? extends U> valueMapper, BinaryOperator mergeFunction, SuppliermapSupplier);
参数含义分别是:
—————————
如有不足请留言指正
相互学习,共同进步