分组 + 组成新的List
使用场景:
已存在一个对象的List列表,希望根据这个对象的某一个属性对list进行分组,然后将分组后的这个属性形成字符串。
对象列表:
List<Student> lsit = new ArrayList<>();
list.add(new Student(1,"张三",12)); // 1班 张三 12岁
list.add(new Student(1,"李四",13));
list.add(new Student(2,"王五",12));
list.add(new Student(2,"贼六",11));
list.add(new Student(3,"对七",12));
学生构造函数:
new Student(Integer classNo,String name,Integer age)
对list按照 班级进行分组
//按照班级进行分组
Map<Integer, List<Student>> classMap = list.stream().collect(Collectors.groupingBy(Student::getClassNo));
结果是map:
key: 1 value:[{classNo:1,name:"张三",age:12},{classNo:1,name:"李四",age:13}]
key: 2 value:[{classNo:2,name:"王五",age:12},{classNo:1,name:"贼六",age:11}]
key: 3 value:[{classNo:3,name:"对七",age:12}]
将结果的key值形成新的ArrayList<String>数组集合
List<String> classNoArray= classMap.keySet().stream().map(O->O.toString()).collect(Collectors.toList());
结果:
ArrayList<String>:["1","2","3"]
将list数组集合转成字符串
String classNoStr = String.join(",",classNoArray); //"1,2,3"