关于JAVA中stream流的基础处理(获取对象字段和对象批量处理等)

 更新时间:2023年03月24日 15:48:24   作者:NicenJack  
这篇文章主要介绍了关于JAVA中stream流的基础处理,包含获取对象字段、按字段排序、按字段去重、对象批量处理、指定字段转数组等内容,需要的朋友可以参考下

Stream流程处理情况

1:按指定字段获取集合对象中的字段:

List<String> idList = initUserList.stream().map(User::getId).collect(Collectors.toList());

2:按指定字段对集合对象进行排序:

List<User> collect = initUserList.stream().sorted(Comparator.comparing(User::getAge)).collect(Collectors.toList());

3: 按指定字段对集合对象去重处理

List<User> collect = initUserList.stream().collect(Collectors.collectingAndThen( Collectors.toCollection(()->new TreeSet<>(Comparator.comparing(User::getName))), ArrayList::new));

4: 对集合对象批量处理

initUserList.forEach((User user) ->user.setName(user.getName()+"123"));

5: 将集合对象中指定字段转数组

String[] strings = initUserList.stream().map(User::getId).toArray(String[]::new);

完整代码如下:

对象类:

package com.dom;
 
import java.util.Date;
 
/**
 * @author Administrator
 */
public class User {
 
    private String id;
    private String name;
    private String sex;
    private int age;
    private Date birthday;
 
    @Override
    public String toString() {
        return "User{" +
                "id='" + id + '\'' +
                ", name='" + name + '\'' +
                ", sex='" + sex + '\'' +
                ", age=" + age +
                ", birthday=" + birthday +
                '}';
    }
 
    public String getId() {
        return id;
    }
 
    public void setId(String id) {
        this.id = id;
    }
 
    public String getName() {
        return name;
    }
 
    public void setName(String name) {
        this.name = name;
    }
 
    public String getSex() {
        return sex;
    }
 
    public void setSex(String sex) {
        this.sex = sex;
    }
 
    public int getAge() {
        return age;
    }
 
    public void setAge(int age) {
        this.age = age;
    }
 
    public Date getBirthday() {
        return birthday;
    }
 
    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }
}

初始化构建类:

package com.create;
 
import com.dom.User;
 
import java.util.*;
 
public class CreateUser {
 
    public static List<User> getInitUserList(){
        List<User> list = new ArrayList<>();
        for (int i = 0; i < 10; i++) {
            User user = new User();
            user.setId(String.valueOf(i*10));
            user.setName("名称"+i);
            user.setAge(i+2*i);
            if (i%3!=0){
                user.setSex("男");
            }else{
                user.setSex("女");
            }
            user.setBirthday(new Date(new Random().nextLong()*(369 - 258)*i));
            list.add(user);
        }
        //设置重复名称用户
        User user1 = new User();
        user1.setId(String.valueOf(37));
        user1.setName("名称"+3);
        user1.setAge(11);
        user1.setSex("男");
        user1.setBirthday(new Date(new Random().nextLong()*(369 - 258)*2));
        list.add(user1);
        User user2 = new User();
        user2.setId(String.valueOf(58));
        user2.setName("名称"+5);
        user2.setAge(17);
        user2.setSex("女");
        user2.setBirthday(new Date(new Random().nextLong()*(369 - 258)*2));
        list.add(user2);
        return list;
    }
}

主类:

package com.test.roc;
 
import com.create.CreateUser;
import com.dom.User;
 
import java.util.List;
 
public class ListTest {
 
    public static void main(String[] args) {
        List<User> initUserList = CreateUser.getInitUserList();
        setOut(initUserList);
        System.out.println("----------------↑↑↑↑↑↑↑↑↑↑↓↓↓↓↓↓↓↓↓↓-------------------");
        //流处理
        //1按指定字段获取集合对象中的字段
//        List<String> idList = initUserList.stream().map(User::getId).collect(Collectors.toList());
        //2 按指定字段对集合对象进行排序:
//        List<User> collect = initUserList.stream().sorted(Comparator.comparing(User::getAge)).collect(Collectors.toList());
        //3 按指定字段对集合对象去重处理
//        List<User> collect = initUserList.stream().collect(Collectors.collectingAndThen(
//                Collectors.toCollection(()->new TreeSet<>(Comparator.comparing(User::getName))), ArrayList::new
//        ));
        //4 对集合对象批量处理
//        initUserList.forEach((User user) ->user.setName(user.getName()+"123"));
        //5 将集合对象中指定字段转数组
//        String[] strings = initUserList.stream().map(User::getId).toArray(String[]::new);
//        for (String string : strings) {
//            System.out.println(string);
//        }
    }
 
    public static void setOut(List<User> list){
        for (User user : list) {
            System.out.println(user);
        }
    }
}

结果截图1:

结果截图2:

结果截图3:

 结果截图4:

 结果截图5:

到此这篇关于关于JAVA中stream流的基础处理(获取对象字段和对象批量处理等)的文章就介绍到这了,更多相关JAVA stream流基础处理内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • JDK动态代理过程原理及手写实现详解

    JDK动态代理过程原理及手写实现详解

    这篇文章主要为大家介绍了JDK动态代理过程原理及手写实现详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-09-09
  • 面试时必问的JVM运行时数据区详解

    面试时必问的JVM运行时数据区详解

    这篇文章主要介绍了JVM运行时数据区原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2021-08-08
  • Java dbcp连接池基本使用方法详解

    Java dbcp连接池基本使用方法详解

    这篇文章主要介绍了Java dbcp连接池基本使用方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-10-10
  • SWT(JFace)体验之StackLayout布局

    SWT(JFace)体验之StackLayout布局

    SWT(JFace)体验之StackLayout布局实现代码。
    2009-06-06
  • JAVA中的SPI思想介绍

    JAVA中的SPI思想介绍

    大家好,本篇文章主要讲的是JAVA中的SPI思想介绍,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2022-01-01
  • springboot内嵌Tomcat安全漏洞修复方式

    springboot内嵌Tomcat安全漏洞修复方式

    针对CVE-2020-1938漏洞,建议升级Tomcat至安全版本以避免受影响,影响版本包括:Apache Tomcat 9.x小于9.0.31、Apache Tomcat 8.x小于8.5.51、Apache Tomcat 7.x小于7.0.100及Apache Tomcat 6.x,
    2024-10-10
  • java操作excel的方法

    java操作excel的方法

    这篇文章主要介绍了java操作excel的方法,实例分析了java针对excel文件的读写、打开、保存等操作技巧,需要的朋友可以参考下
    2015-07-07
  • 你不知道的 IDEA Debug调试小技巧(小结)

    你不知道的 IDEA Debug调试小技巧(小结)

    这篇文章主要介绍了你不知道的 IDEA Debug调试小技巧(小结),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10
  • Springboot如何使用YML文件配置多环境

    Springboot如何使用YML文件配置多环境

    这篇文章主要介绍了Springboot如何使用YML文件配置多环境问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • Java实现的串口通信功能示例

    Java实现的串口通信功能示例

    这篇文章主要介绍了Java实现的串口通信功能,结合实例形式分析了java串口通信的具体操作步骤与相关注意事项,需要的朋友可以参考下
    2018-01-01

最新评论