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. 多字段复杂分组
  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).thenCpmpareing(Person.getAge));

     

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

     

上一篇:【SQL语句】学习笔记


下一篇:【Python】 1055 集体照 (25 分)