Java 将两个对象list里面的 某个字段值抽取到一个list里

简介: Java 将两个对象list里面的 某个字段值抽取到一个list里

场景举例:



两个List(rooms1 和 rooms2)里面放的对象都是 Room ,


现在想把两个List里面的 room 的id 都抽取出来,放在一个List里面 。


实现代码:



List<Integer> idList = Stream.concat(rooms1.stream().map(Room::getId), rooms2.stream().map(Room::getId)).collect(Collectors.toList());


List<Integer> idList =  Stream.of(rooms1, rooms2).flatMap(List::stream).map(Room::getId).collect(Collectors.toList());


例子:


import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/**
 * @Author JCccc
 * @Description
 * @Date 2021/8/20 9:05
 */
public class Room {
    private Integer id;
    private String name;
    private Short type;
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Short getType() {
        return type;
    }
    public void setType(Short type) {
        this.type = type;
    }
    public static void main(String[] args) {
        List<Room> rooms1=new ArrayList<>();
        Room roomA=new Room();
        roomA.setId(1);
        roomA.setName("1-A");
        roomA.setType((short)1);
        Room roomB=new Room();
        roomB.setId(2);
        roomB.setName("2-A");
        roomB.setType((short)1);
        rooms1.add(roomA);
        rooms1.add(roomB);
        List<Room> rooms2=new ArrayList<>();
        Room roomC=new Room();
        roomC.setId(3);
        roomC.setName("3-C");
        roomC.setType((short)2);
        Room roomD=new Room();
        roomD.setId(4);
        roomD.setName("4-D");
        roomD.setType((short)2);
        rooms2.add(roomC);
        rooms2.add(roomD);
        //去重set (注意真正操作时需要对俩list做判空校验)
        List<Integer> idList=new ArrayList<>(Stream.concat(rooms1.stream().map(Room::getId), rooms2.stream().map(Room::getId)).collect(Collectors.toSet()));
        //去重set (注意真正操作时需要对俩list做判空校验)
        List<Integer> idList=new ArrayList<>( Stream.of(rooms1, rooms2).flatMap(List::stream).map(Room::getId).collect(Collectors.toSet()));
        //不去重list
        //  List<Integer> idList = Stream.concat(rooms1.stream().map(Room::getId), rooms2.stream().map(Room::getId)).collect(Collectors.toList());
        System.out.println(idList.toString());
    }
}


输出结果:

 image.png


ps:


同样,如果来自一个List的两个值,也想抽出来放到一个list里面去:


image.png


只需要做点小改动,


List<Room> rooms1=new ArrayList<>();

Room roomA=new Room();

roomA.setId(1);

roomA.setName("1-A");

roomA.setType((short)1);

roomA.setFid(5);


Room roomB=new Room();

roomB.setId(2);

roomB.setName("2-A");

roomB.setType((short)1);

roomB.setFid(10);

rooms1.add(roomA);

rooms1.add(roomB);


List<Integer> idList = Stream.concat(rooms1.stream().map(Room::getId), rooms1.stream().map(Room::getFid)).collect(Collectors.toList());

相关文章
|
19天前
|
Java
Java快速入门之类、对象、方法
本文简要介绍了Java快速入门中的类、对象和方法。首先,解释了类和对象的概念,类是对象的抽象,对象是类的具体实例。接着,阐述了类的定义和组成,包括属性和行为,并展示了如何创建和使用对象。然后,讨论了成员变量与局部变量的区别,强调了封装的重要性,通过`private`关键字隐藏数据并提供`get/set`方法访问。最后,介绍了构造方法的定义和重载,以及标准类的制作规范,帮助初学者理解如何构建完整的Java类。
|
18天前
|
安全 Java
Object取值转java对象
通过本文的介绍,我们了解了几种将 `Object`类型转换为Java对象的方法,包括强制类型转换、使用 `instanceof`检查类型和泛型方法等。此外,还探讨了在集合、反射和序列化等常见场景中的应用。掌握这些方法和技巧,有助于编写更健壮和类型安全的Java代码。
30 17
|
1月前
|
Java
java代码优化:判断内聚到实体对象中和构造上下文对象传递参数
通过两个常见的java后端实例场景探讨代码优化,代码不是优化出来的,而是设计出来的,我们永远不可能有专门的时间去做代码优化,优化和设计在平时
31 15
|
3月前
|
安全 Java 编译器
Java对象一定分配在堆上吗?
本文探讨了Java对象的内存分配问题,重点介绍了JVM的逃逸分析技术及其优化策略。逃逸分析能判断对象是否会在作用域外被访问,从而决定对象是否需要分配到堆上。文章详细讲解了栈上分配、标量替换和同步消除三种优化策略,并通过示例代码说明了这些技术的应用场景。
Java对象一定分配在堆上吗?
|
3月前
|
存储 缓存 NoSQL
一篇搞懂!Java对象序列化与反序列化的底层逻辑
本文介绍了Java中的序列化与反序列化,包括基本概念、应用场景、实现方式及注意事项。序列化是将对象转换为字节流,便于存储和传输;反序列化则是将字节流还原为对象。文中详细讲解了实现序列化的步骤,以及常见的反序列化失败原因和最佳实践。通过实例和代码示例,帮助读者更好地理解和应用这一重要技术。
90 0
|
Java Apache
Java 中 List 分片的 5 种方法!(5)
Java 中 List 分片的 5 种方法!(5)
329 0
Java 中 List 分片的 5 种方法!(5)
|
Java
Java 中 List 分片的 5 种方法!(4)
Java 中 List 分片的 5 种方法!(4)
455 0
Java 中 List 分片的 5 种方法!(4)
|
Java
Java 中 List 分片的 5 种方法!(3)
Java 中 List 分片的 5 种方法!(3)
629 0
Java 中 List 分片的 5 种方法!(3)
|
Java
Java 中 List 分片的 5 种方法!(2)
Java 中 List 分片的 5 种方法!(2)
443 0
Java 中 List 分片的 5 种方法!(2)
|
SQL Java 关系型数据库
Java 中 List 分片的 5 种方法!(1)
Java 中 List 分片的 5 种方法!(1)
417 0
Java 中 List 分片的 5 种方法!(1)