ListWmWaterMeter meterDataWithLargerCaliber;ListWmMeterData meterDataList;WmMeterData中有WmWaterMeter的id属性为meterId。过滤出meterDataList中含有meterDataWithLargerCaliber中meterId的数据
可以使用Java 8的流操作和filter方法来过滤出meterDataList中含有meterDataWithLargerCaliber中meterId的数据。假设WmMeterData类中的meterId属性为int类型,可以按照以下步骤实现过滤:
- 创建一个新的List对象,用于存储过滤后的数据:
List<WmMeterData> filteredDataList = new ArrayList<>();
- 使用流操作和filter方法过滤出符合条件的数据:
filteredDataList = meterDataList.stream()
.filter(data -> meterDataWithLargerCaliber.stream()
.map(WmWaterMeter::getId)
.collect(Collectors.toList())
.contains(data.getMeterId()))
.collect(Collectors.toList());
在上述代码中,使用stream()方法将meterDataList转换为流对象。然后,使用filter方法对每个WmMeterData对象进行过滤。在过滤条件中,使用stream()方法将meterDataWithLargerCaliber转换为流对象,并使用map方法提取每个WmWaterMeter对象的id属性。然后,使用collect方法将这些id属性收集到一个列表中。最后,使用contains方法检查WmMeterData对象的meterId属性是否在列表中,如果在,则保留该对象。
- filteredDataList中即为过滤后的数据。
完整代码示例:
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
List<WmWaterMeter> meterDataWithLargerCaliber = new ArrayList<>();
List<WmMeterData> meterDataList = new ArrayList<>();
List<WmMeterData> filteredDataList = new ArrayList<>();
// 添加示例数据
meterDataWithLargerCaliber.add(new WmWaterMeter(1));
meterDataWithLargerCaliber.add(new WmWaterMeter(2));
meterDataWithLargerCaliber.add(new WmWaterMeter(3));
meterDataList.add(new WmMeterData(1));
meterDataList.add(new WmMeterData(2));
meterDataList.add(new WmMeterData(3));
meterDataList.add(new WmMeterData(4));
meterDataList.add(new WmMeterData(5));
// 过滤出符合条件的数据
filteredDataList = meterDataList.stream()
.filter(data -> meterDataWithLargerCaliber.stream()
.map(WmWaterMeter::getId)
.collect(Collectors.toList())
.contains(data.getMeterId()))
.collect(Collectors.toList());
// 输出过滤后的数据
for (WmMeterData data : filteredDataList) {
System.out.println(data.getMeterId());
}
}
}
class WmWaterMeter {
private int id;
public WmWaterMeter(int id) {
this.id = id;
}
public int getId() {
return id;
}
}
class WmMeterData {
private int meterId;
public WmMeterData(int meterId) {
this.meterId = meterId;
}
public int getMeterId() {
return meterId;
}
}
输出结果为:
1
2
3
这表示meterDataList中的meterId为1、2、3的数据被成功过滤出来。
原文地址: https://www.cveoy.top/t/topic/i5WN 著作权归作者所有。请勿转载和采集!