lambd对list的简单使用
初始数据:
Person() {
// id
private Long id; // 年龄 private Integer age; // 姓名 private String name; // 城市 private String city; } // 年龄,姓名,城市 Person person1 = new Person(1, 12, "张三", "北京"); Person person2 = new Person(2, 13, "李四", "北京"); Person person3 = new Person(3, 12, "王五", "上海"); Person person4 = new Person(4, 13, "赵六", "北京"); List<Person> persons = new ArrayList(); persons.add(person1); persons.add(person2); persons.add(person3); persons.add(person4);
- 对某个字段求和
persons.stream()
.mapToInt(Person::getAge).sum(); - 对某个字段值分组
persons.stream()
.collection(Collectors.groupingBy(Person::getCity)) - 多字段复杂分组
// Function<T, R> T-入参类型,R-返回类型 Function<OrderPayMethodVO, String> compositeKey = item -> CollectionUtils.isEmpty(item.getSubMethodList())? NORMAL_PAY_METHOD_KEY: INSTALLMENT_PAY_METHOD_KEY; Map<String, List<OrderPayMethodVO>> map = orderPayMethodList.stream()
.collect(Collectors.groupingBy(compositeKey, Collectors.toList())); - 过滤(结果:保留符合条件的数据)
persons.stream()
.filter(a -> Objects.equals(a.getName(), "张三"))
.collect(Collectors.toList()); - 最值
- 转map
Map<Long, Person> personMap = persons.stream()
.collect(Collectors.toMap(Person::getId, a -> a, (k1, k2) -> k1)); - 排序
// 比较id,顺序 persons.sort(Comparator.comparing(Person::getId));
// 比较ID,倒序
persons.sort(Comparator.comparing(Person::getId).reversed());// 先比较id,再比较年龄 persons.sort(Comparator.comparing(Person::getId).thenCpmpareing(Person.getAge));
- 去重
- 获取list某个字段组装新list
List<String> names = persons.stream() .map(Person::getName) .collect(Collectors.toList());
posted on 2021-05-12 15:15 Iversonstear 阅读(79) 评论(0) 编辑 收藏 举报