List集合流处理类型小结

摘要:
本文最初由博主和相应的实体类importlombok创建。未经许可,不得转载Getter;importlombok。设置器;@Getter@SetterpublicclassStudent{privateStringname;privateintage;privateStringclassName;privateString生日;}1.根据字段列表˂Study获取字段属性集

本文为博主原创,未经允许不得转载

对应实体类

importlombok.Getter;
importlombok.Setter;

@Getter
@Setter
public classStudent {
    
    privateString name;
    
    private intage;
    
    privateString className;

    privateString birthday;
}

1.根据字段取出某一个字段属性的集合

List<Student> studentList = new ArrayList<>();
     List<int> newList =studentList.stream().map(Student::getAge).collect(Collectors.toList());
     for(Student student : newList) {
        System.out.println(student.getName()+"---"+student.getAge());
    }

2。List根据某个字段升序排序

List<Student> studentList = new ArrayList<>();
    List<Student> newList =studentList.stream().sorted(Comparator.comparing(Student::getAge)).collect(Collectors.toList());
    for(Student student : newList) {
    System.out.println(student.getName()+"---"+student.getAge());
}

3.List根据某个字段排序降序

List<Student> list = new ArrayList<>();
    list = list.stream().sorted(Comparator.comparing(Student::getAge).reversed()).collect(Collectors.toList());

4.获取某一字段属性值对应的数据集合

List<Student> resultList =studentList.stream()
        .filter((Student stu) ->area.equals(stu.getAge()))
        .collect(Collectors.toList());

5.根据某个字段值获取出对应的对象

Student stu =studentList.stream()
        .filter(p -> "2018-08-12 12:10".equals(p.getBirthday()))
        .findAny().orElse(null);

6.对集合元素去重

List<String> nameList = new ArrayList<>();
nameList = nameList.stream().distinct().collect(Collectors.toList());

7.对集合某一个属性进行求和

List<Student> stuList = new ArrayList<>();    
double totalAge = stuList.stream().collect(Collectors.summingDouble(Student::getAge));

8。获取集合中的某一个属性的数据集合并去重

 // 所有的ip信息对象集合
List<NetiIpInfo> netInfoList =netIpService.queryNetIpList();
// 从所有IP信息对象集合中根据机房id过滤出所有机房id不同的数据对象,并根据机房id去重 List
<NetiIpInfo> distinctIpRoomList =netInfoList.stream().collect(Collectors .collectingAndThen(Collectors.toCollection(() -> new TreeSet<>( Comparator.comparing(NetiIpInfo::getIpRoomId))), ArrayList::new));

代码是很简答,很优雅的

解释一下

list.stream(): 是把list集合转化为stream集合

sorted(): 进行排序,其中Comparator.comparing(Student::getAge)表示按照年纪排序,

.reversed()表示是逆序,因为默认情况下,不加.reversed 是升序的

collect(Collectors.toList()): 再次将排序后的stream集合转化为list集合

.findAny()表示将其中任意一个返回;

.orElse(null)表示如果一个都没找到返回null

distinct() 对集合元素或对象去重

summingDouble() 对集合元素进行求和为double类型数据

免责声明:文章转载自《List集合流处理类型小结》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇java设计模式-----14、桥接模式使用logstash同步Mysql数据表到ES的一点感悟下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

7.模块化封装Storage实现缓存数据持久化

1.模块化封装Storage实现缓存数据持久化 1.在src目录下新建目录model,在model目录下新建js文件取名storage.js var storage={ set(key,value){ // 设置为本地缓存方法 localStorage.setItem(key,JSON.stringify(valu...

Java生鲜电商平台-购物车模块的设计与架构

Java生鲜电商平台-购物车模块的设计与架构 说明:任何一个电商无论是B2C还是B2B都有一个购物车模块,其中最重要的原因就是客户需要的东西放在一起,形成一个购物清单,确认是否有问题,然后再进行下单与付款. 1. 购物车数据库设计: 说明:业务需求:          1》购物车里面应该存放,那个买家,买了那个菜品的什么规格,有多少数量,然后这个菜品的加...

将List&amp;lt;T&amp;gt;转化成 DataTable调整可空类型的转化错误

加载表结构并保持成XML View Code string cmdText = @"select * from kb_lable_temp where 1=2"; using (SqlConnection conn = new SqlConnection(DBCtx.ConnStr))...

.class 字节码文件修改

有个.class文件,用XJad反编译如下: public String int() { String s = null; try{ List list = c.if(a).getNeighboringCellInfo(); if (list != null &...

判断字符串中是否存在的几种方案:string.indexof、string.contains、list.contains、list.any几种方式效率对比

我们在做项目时,可能会遇到这样的需求,比如判断,1,2,3,33,22,123, 中是否存在,3,。 var str=",1,2,3,33,22,123,"; 一般有几种方式: 1、str.IndexOf(",3,")>=0 2、str.Contains(",3,") 有可能我们不用字符串而用List来存,判断list中是否存在3 var list...

Java中集合总结

Java数组的长度是固定的,为了使程序能够方便地存储和操作数目不固定的一组数据,JDK类库提供了Java集合,这些集合类都位于java.util包中,但是与数组不同的是,集合中不能存放基本类型数据,而只能存放对象的引用。 Java集合主要分为以下三种类型: Set(集):集合中的对象不按特定方式排序,且没有重复对象。它的有些实现类能对集合中的对象按照特地方...