关于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流基础处理内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • SpringBoot使用RabbitMQ延时队列(小白必备)

    SpringBoot使用RabbitMQ延时队列(小白必备)

    这篇文章主要介绍了SpringBoot使用RabbitMQ延时队列(小白必备),详细的介绍延迟队列的使用场景及其如何使用,需要的小伙伴可以一起来了解一下
    2019-12-12
  • Java代理模式之静态代理与动态代理的区别及优缺点

    Java代理模式之静态代理与动态代理的区别及优缺点

    代理模式是一种常用的设计模式,它允许通过引入一个代理对象来控制对目标对象的访问,在Java中,代理模式被广泛应用,它可以提供额外的功能,如权限检查、缓存、日志记录等,本文将介绍静态代理与动态代理的区别及优缺点,需要的朋友可以参考下
    2023-06-06
  • spring之Bean的生命周期详解

    spring之Bean的生命周期详解

    本篇文章主要介绍了spring之Bean的生命周期详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • Java线程中synchronized和volatile关键字的区别详解

    Java线程中synchronized和volatile关键字的区别详解

    这篇文章主要介绍了Java线程中synchronized和volatile关键字的区别详解,synchronzied既能够保障可见性,又能保证原子性,而volatile只能保证可见性,无法保证原子性,volatile不需要加锁,比synchronized更轻量级,不会阻塞线程,需要的朋友可以参考下
    2024-01-01
  • java实现坦克大战小游戏

    java实现坦克大战小游戏

    这篇文章主要为大家详细介绍了java实现坦克大战小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-01-01
  • Java多线程 ThreadLocal原理解析

    Java多线程 ThreadLocal原理解析

    这篇文章主要介绍了Java多线程 ThreadLocal原理,ThreadLoal 变量,线程局部变量,同一个 ThreadLocal 所包含的对象,在不同的 Thread 中有不同的副本,下面文章也是围绕Java多线程 ThreadLocal展开内容,需要的朋友可以参考一下
    2021-10-10
  • eclipse java工程改造为java web工程详解

    eclipse java工程改造为java web工程详解

    这篇文章主要介绍了eclipse java工程改造为java web工程详解的相关资料,需要的朋友可以参考下
    2017-05-05
  • 深入浅析Java中的volatile

    深入浅析Java中的volatile

    volatile是Java提供的一种轻量级的同步机制,在并发编程中,它也扮演着比较重要的角色.这篇文章主要介绍了深入浅析Java中的volatile,需要的朋友可以参考下
    2017-03-03
  • Java详解聊天窗口的创建流程

    Java详解聊天窗口的创建流程

    这篇文章主要介绍了怎么用Java来创建一个聊天窗口,聊天软件我们经常要用,但是你有想过自己怎么去实现它吗,感兴趣的朋友跟随文章往下看看吧
    2022-04-04
  • Java自动取款机ATM案例实现

    Java自动取款机ATM案例实现

    本文主要介绍了Java自动取款机ATM案例实现,整个过程可以分为三部分:登录账户和执行取款操作,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-08-08

最新评论