java8 List常用操作

2020-08-31  本文已影响0人  青休

参考至https://blog.csdn.net/qq_42080073/article/details/105610916
本次项目较多的用到这几种操作,记录一下。

public class User(){
    private String name;
    private long age;
  //getter...setter... 全参构造器... 无参构造器
}

List<User> list = new ArrayList<>();
list.add(new User("u1", 23));
list.add(new User("u2", 43));
list.add(new User("u3", 11));
list.add(new User("u4", 32));

List排序

//正序排序
List<User> sortUser = 
list.stream().sorted(Comparator.comparingLong(User::getAge))
.collect(Collectors.toList());
//倒序排序  reversed()
List<User> reverseUser = 
list.stream().sorted(Comparator.comparingLong(User::getAge).reversed())
.collect(Collectors.toList());

List过滤

//主要方法:filter()
List<User> users = list.stream().filter(user -> user.getAge() > 20).collect(Collectors.toList());

根据对象的某个属性求和

//主要方法:mapToInt(),mapToDouble(),mapToLong(),sum()
long sum = list.stream().mapToLong(User::getAge).sum();

根据集合生成新的list集合

// 获取 users 集合中的 id 集合 
List<Long> ids = users.stream().map(User::getAge).collect(Collectors.toList()); 
 
// 获取 users 集合中的 id 集合并转为字符串, 通过 , 拼接 
String idsTxt = users.stream().map(User::getAge).map(String::valueOf)
        .collect(Collectors.joining(","));

根据对象属性分组

//主要方法:Collectors.groupingBy()
Map<Integer, List<User>> groupByUserAge = list.stream()
        .collect(Collectors.groupingBy(list::getAge));
上一篇下一篇

猜你喜欢

热点阅读