List中的一些用法(过滤、分页、求和,排序)

1、List中根据对象某一个字段进行求和

第一种方式
int suma = list.stream().map(e -> e.getAge()).reduce(Integer::sum).get();//求和
System.out.println(suma);
int maxa = list.stream().map(e -> e.getAge()).reduce(Integer::max).get();//最大
System.out.println(maxa);
int mina = list.stream().map(e -> e.getAge()).reduce(Integer::min).get();//最小
System.out.println(mina);

第二种方式

double doublesum = list.stream().mapToDouble(Student::getAge).sum();//和
System.out.println(doublesum);
int intmax = list.stream().mapToInt(Student::getAge).max().getAsInt();//最大
System.out.println(intmax);
int intmin = list.stream().mapToInt(Student::getAge).min().getAsInt();//最小
System.out.println(intmin);
double avg = list.stream().mapToDouble(Student::getAge).average().getAsDouble();//平均
System.out.println(avg);

2、对list进行分页处理

List<PlantinfoVo> subList=new ArrayList<>(); 
subList = plantinfoVoList.stream().skip((page.getPageNum() - 1) * page.getPageSize()).limit(page.getPageSize()).
                        collect(Collectors.toList());

3、根据需要留下来的条件过滤出list集合,下面list中需要获得devicetypeName=m或者p或者w的list集合

List<Device> relationModels = deviceMapper.selectDevice(id);
List<Device> device = relationModels.stream().filter(x -> x.getDeviceTypeName().equals("w") || x.getDeviceTypeName().equals("m") || x.getDeviceTypeName().equals("p")).collect(Collectors.toList());

4、根据list中对象某一字段的大小进行排序

List<Person2> personList = new ArrayList<Person2>();
        personList.add(new Person2("Tom", 8900, 18,"male", "A"));
        personList.add(new Person2("Jack", 7000, 19,"male", "A"));
        personList.add(new Person2("Lily", 7800, 20,"female", "D"));
        personList.add(new Person2("Anni", 8200, 18,"female", "B"));
        personList.add(new Person2("Owen", 9500, 23,"male", "D"));
        personList.add(new Person2("Alisa", 7900, 28,"female", "C"));
  
        //根据List集合对象的sort方法(语句后x.get与y.get调换位置即为倒序)
        personList.sort((x,y) -> Integer.compare(x.getSalary(),y.getSalary()));//int类型正序
        personList.forEach(System.out::println);
        System.out.println("================================");

        personList.sort((a, b) -> a.getSalary() - b.getSalary());//int类型正序
        personList.forEach(System.out::println);
        System.out.println("================================");

        personList.sort(Comparator.comparing(Person2::getSalary));//int类型正序排序
        personList.forEach(System.out::println);
        System.out.println("================================");

        personList.sort((a,b) -> a.getLevel().compareTo(b.getLevel()));//其他类型正序
        personList.forEach(System.out::println);
        System.out.println("================================");

        //stream流的sorted方法正序排序(倒序:Comparator.comparing(Person2::getSalary).reversed())
        personList = personList.stream().sorted(Comparator.comparing(Person2::getSalary)).collect(Collectors.toList());
        personList.forEach(System.out::println);
        System.out.println("================================");

 

参考文章:LIST集合中的某个元素的求和_java list某个字段求和-CSDN博客

Java中List对象集合按照对象中某字段进行排序_java list 根据某一个字段排序_壹猿的博客-CSDN博客

  • 12
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值