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);

 

  1. 对某个字段求和
    persons.stream()
      .mapToInt(Person::getAge).sum();

     

  2. 对某个字段值分组
    persons.stream()
      .collection(Collectors.groupingBy(Person::getCity))

     

  3. 多字段复杂分组
    // 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()));

     

  4. 过滤(结果:保留符合条件的数据)
    persons.stream()
      .filter(a -> Objects.equals(a.getName(), "张三"))
      .collect(Collectors.toList());

     

  5. 最值
  6. 转map
    Map<Long, Person> personMap = persons.stream()
      .collect(Collectors.toMap(Person::getId, a -> a, (k1, k2) -> k1));

     

  7. 排序
    // 比较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));

     

  8. 去重
  9. 获取list某个字段组装新list
    List<String> names = persons.stream()
        .map(Person::getName)
        .collect(Collectors.toList());

     

posted on 2021-05-12 15:15  Iversonstear  阅读(79)  评论(0编辑  收藏  举报

导航