先定义一个List,代码如下
//定义一个实例类
public class Model{
private String id;
private String code;
private String name;
private BigDecimal bonus;
//setter getter 方法省略
}
//定义一个List,赋值过程省略
List<Model> list = new ArrayList<>();
1.将List中每一个对象的id取出,组装成新的List
//示例代码
List<String> idList = list.stream().map(Model::getId).collect(Collectors.toList());
2.将List对象中取出组装成map,要求map的key是code值,value是code相同的Model类
//示例代码
Map<String,List<Model>> codeMap = list.stream().collect(Collectors.groupingBy(e -> e.getCode()));
3.将List对象中的code和name的值取出,组装成一个map.(注意:如果code值重复,后赋值的name会覆盖先赋值的name值)
//示例代码
Map<String, String> map = list.stream().collect(Collectors.toMap(Model::getCode,Person::getName));
4.将List中的bonus字段求和
//示例代码
BigDecimal totalBonus = list.stream().map(e->(e.getBonus()!=null?e.getBonus():BigDecimal.ZERO)).reduce(BigDecimal::add).get();
5.将List中数据按照id进行重新组装
//示例代码
Map<String, Model> listMap= list.stream().collect(Collectors.toMap(Model::getId, f -> f));
6.排序
//创建初始值
List<Model> list = new ArrayList<>();
list.add(new Model("1"));
list.add(new Model("4"));
list.add(new Model("3"));
list.add(new Model("5"));
list.add(new Model("2"));
//1.
list = list.stream().sorted(Comparator.comparing(Model::getId)).collect(Collectors.toList());
// 结果 [Model{id='1}, Model{id='2}, Model{id='3}, Model{id='4}, Model{id='5}]
//2.
list.add(new Model(null));
list = list.stream().sorted(Comparator.comparing(Model::getId)).collect(Collectors.toList());
//结果 报错
//3.
list = list.stream().sorted(Comparator.comparing(Model::getId,Comparator.nullsFirst(Comparator.naturalOrder()))).collect(Collectors.toList());
//结果 [Model{id='null}, Model{id='1}, Model{id='2}, Model{id='3}, Model{id='4}, Model{id='5}]