获取一个实体集合数据中某个元素(如ID)的集合

本文记录了一种提高数据处理效率的方法,通过Java的Stream API来替代传统的for循环。示例中展示了如何使用QueryWrapper从数据库中筛选特定ID,并将结果转换为Integer列表,进一步优化查询条件。这种方式简化了代码,提高了代码的可读性和执行效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在获取数据中我们一般获取到一个集合,然后需要用for循环来取出需要的元素如id

这样比较麻烦,效率好像也低,然后找到一种新的方式,记一下

QueryWrapper<NameListStaff>queryWrapper1 = new QueryWrapper<>();
queryWrapper1.eq("staff_id",list.get(0).getStaffId());
List<NameListStaff>m =nameListStaffMapper.selectList(queryWrapper1);
List<Integer> collect = m.stream().map(NameListStaff::getNameListId).collect(Collectors.toList());
if(collect.size()>0) {
   queryWrapper.in("id",collect);
}
### 如何从实体集合获取实体属性集合 为了有效地从实体集合中提取特定的实体属性,可以采用多种方式。一种常见的方式是利用Java Stream API结合`map()`函数来转换每个实体对象到所需的属性值。这种方式不仅简洁而且易于理解。 假设有一个名为`User`的实体类,其中包含多个字段如`id`, `name`, 和`age`: ```java public class User { private Long id; private String name; private Integer age; // Getters and Setters... } ``` #### 使用Stream API 获取单个属性列表 要获得所有用户的名称列表,可以通过创建一个流并映射每个`User`实例至其对应的`name`属性[^1]: ```java import java.util.List; import java.util.stream.Collectors; // 假设 users 是 List<User> 类型的对象 List<String> names = users.stream() .map(User::getName) .collect(Collectors.toList()); ``` 这段代码会遍历整个用户列表,并将每一个`User`对象的名字取出形成一个新的字符串类型的列表。 #### 提取复合属性或组合数据结构 当需要更复杂的处理逻辑时,比如想要得到由名字和年龄组成的元组形式的数据集,同样也可以借助于`stream().map()`操作配合自定义的结果容器或是简单地使用一对键值对表示法(例如Map.Entry)。这展示了一个例子,它创建了一张表,记录了每位成员的名字及其对应的工作年限(假定工作年限等于当前年份减去年龄): ```java import org.javatuples.Pair; // 需引入外部库 javatuple List<Pair<String, Integer>> userWorkExperiencePairs = users.stream() .map(user -> Pair.with( user.getName(), Year.now().getValue() - user.getAge())) .collect(Collectors.toList()); ``` 对于更加复杂的需求场景下,还可以考虑编写专门用于此目的的小工具类或者方法来进行批量读写操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值