参考至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));