Java8流结构初体验

今天遇到一个将list内相同属性的数据分别转化为一组数据的场景,使用java8的流结构感动到不行。

list转化为map

  • Collectors.toMap

value为成员变量

public Map<Long, String> getIdNameMap(List<Account> accounts) {
    return accounts.stream().collect(Collectors.toMap(Account::getId, Account::getUsername));
}

//第一个参数为key,第二个参数为value

value为实体本身

public Map<Long, Account> getIdAccountMap(List<Account> accounts) {
    return accounts.stream().collect(Collectors.toMap(Account::getId, account -> account));
}

重复key

key值覆盖

     public Map<String, Account> getNameAccountMap(List<Account> accounts) {
    return accounts.stream().collect(Collectors.toMap(Account::getUsername, Function.identity(), (key1, key2) -> key2));
}
//第一个key值覆盖第二个

分组——————用groupingBy 或者 partitioningBy进行分组

Map<Integer, List<Person>> personGroups = Stream.generate(new PersonSupplier()).
 limit(100).
 collect(Collectors.groupingBy(Person::getAge));

Map<Integer, List<Employee>> collect = employees.stream().collect(Collectors.groupingBy(Employee::getAge));

    原文作者:Terry
    原文地址: https://zhuanlan.zhihu.com/p/70573869
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞