直接上代码,测试
package com.example.demo.Enum;
import com.alibaba.fastjson.JSON;
import lombok.Data;
import java.util.*;
import java.util.stream.Collectors;
@Data
public class BeanName {
private Integer id;
private String name;
private Boolean sex;
public BeanName(int id, String name, boolean sex) {
this.id = id;
this.name = name;
this.sex = sex;
}
public static void main(String[] args) {
BeanName beanName1 = new BeanName(1, "A", true);
BeanName beanName2 = new BeanName(2, "B", true);
BeanName beanName3 = new BeanName(3, "C", false);
BeanName beanName4 = new BeanName(3, "D", false);
List<BeanName> list = new ArrayList<>();
list.add(beanName1);list.add(beanName2);list.add(beanName3);list.add(beanName4);
System.out.println("原来的值:" + JSON.toJSONString(list));
// list.stream().map().collect() 方法,可以获取list中JavaBean的某个字段,转成一个新的list。
List<Integer> integerList = list.stream().map(e -> e.getId()).collect(Collectors.toList());
System.out.println("根据JavaBean的某个字段,转成新的list(未去重):" + JSON.toJSONString(integerList));
List<Integer> integerListD = list.stream().map(e -> e.getId()).distinct().collect(Collectors.toList());
System.out.println("根据JavaBean的某个字段,转成新的list(去重):" + JSON.toJSONString(integerListD));
Set<Integer> integerSet = list.stream().map(e -> e.getId()).collect(Collectors.toSet());
System.out.println("根据JavaBean的某个字段,转成新的Set(去重):" + JSON.toJSONString(integerSet));
List<Integer> sortedNumbers = list.stream().map(e -> e.getId()).distinct().sorted().collect(Collectors.toList());
System.out.println("根据JavaBean的某个字段,升序排序:" + JSON.toJSONString(sortedNumbers));
List<Integer> reversedNumbers = list.stream().map(e -> e.getId()).distinct()
.sorted(Comparator.reverseOrder()).collect(Collectors.toList());
System.out.println("根据JavaBean的某个字段,降序排序:" + JSON.toJSONString(reversedNumbers));
List<BeanName> sortedList = list.stream().sorted(Comparator.comparing(BeanName::getId)).collect(Collectors.toList());
System.out.println("根据JavaBean的某个字段,进行升序:" + JSON.toJSONString(sortedList));
List<BeanName> reversedList = list.stream().sorted(Comparator.comparing(BeanName::getId)
.reversed()).collect(Collectors.toList());
System.out.println("根据JavaBean的某个字段,进行降序序:" + JSON.toJSONString(reversedList));
// list.stream().filter()可以对list中的JavaBean进行筛选,保留符合条件的 JavaBean
List<String> filterList = list.stream().filter(e->e.getSex()).map(BeanName::getName).collect(Collectors.toList());
System.out.println("根据JavaBean的sex为true,转成新的list(未去重):" + JSON.toJSONString(filterList));
Map<Integer,BeanName> filterMap = list.stream().filter(e -> e.getSex()).collect(Collectors
.toMap(BeanName::getId,v->v,(k1,k2)->k1));
System.out.println("根据JavaBean的sex为true,转成新的Map(去重):" + JSON.toJSONString(filterMap));
// list.stream().collect() 方法,可以把list转为map,(k1, k2) -> k1) 如果有重复就取第一个
Map<Integer,String> idMap = list.stream().collect(Collectors.toMap(BeanName::getId, v->v.getName(),(k1, k2) -> k1));
System.out.println("将List转成Map,以Id作为key,Name作为value:" + JSON.toJSONString(idMap));
Map<Integer,BeanName> listMap = list.stream().collect(Collectors.toMap(BeanName::getId, v->v,(k1, k2) -> k1));
System.out.println("将List转成Map,以Id作为key,javaBean作为value:" + JSON.toJSONString(listMap));
Map<Integer,List<BeanName>> groupMap = list.stream().collect(Collectors.groupingBy(BeanName::getId));
System.out.println("将List转成Map,以Id作为key,List作为value:" + JSON.toJSONString(groupMap));
Map<Integer, Map<String, List<BeanName>>> groupsMap = list.stream().collect(Collectors.groupingBy(BeanName::getId,
Collectors.groupingBy(BeanName::getName)));
System.out.println("将List转成Map,以Id作为key,Map作为value:" + JSON.toJSONString(groupsMap));
long count = list.stream().count();
System.out.println("将List元素数量:" + count);
}
}
运行结果
原来的值:[{"id":1,"name":"A","sex":true},{"id":2,"name":"B","sex":true},{"id":3,"name":"C","sex":false},{"id":3,"name":"D","sex":false}]
根据JavaBean的某个字段,转成新的list(未去重):[1,2,3,3]
根据JavaBean的某个字段,转成新的list(去重):[1,2,3]
根据JavaBean的某个字段,转成新的Set(去重):[1,2,3]
根据JavaBean的某个字段,升序排序:[1,2,3]
根据JavaBean的某个字段,降序排序:[3,2,1]
根据JavaBean的某个字段,进行升序:[{"id":1,"name":"A","sex":true},{"id":2,"name":"B","sex":true},{"id":3,"name":"C","sex":false},{"id":3,"name":"D","sex":false}]
根据JavaBean的某个字段,进行降序序:[{"id":3,"name":"C","sex":false},{"id":3,"name":"D","sex":false},{"id":2,"name":"B","sex":true},{"id":1,"name":"A","sex":true}]
根据JavaBean的sex为true,转成新的list(未去重):["A","B"]
根据JavaBean的sex为true,转成新的Map(去重):{1:{"id":1,"name":"A","sex":true},2:{"id":2,"name":"B","sex":true}}
将List转成Map,以Id作为key,Name作为value:{1:"A",2:"B",3:"C"}
将List转成Map,以Id作为key,javaBean作为value:{1:{"id":1,"name":"A","sex":true},2:{"id":2,"name":"B","sex":true},3:{"id":3,"name":"C","sex":false}}
将List转成Map,以Id作为key,List作为value:{1:[{"id":1,"name":"A","sex":true}],2:[{"id":2,"name":"B","sex":true}],3:[{"id":3,"name":"C","sex":false},{"id":3,"name":"D","sex":false}]}
将List转成Map,以Id作为key,Map作为value:{1:{"A":[{"id":1,"name":"A","sex":true}]},2:{"B":[{"id":2,"name":"B","sex":true}]},3:{"C":[{"id":3,"name":"C","sex":false}],"D":[{"id":3,"name":"D","sex":false}]}}
将List元素数量:4