我现在要实现一个功能,逻辑是我循环一个数据集合,判断数据集合里的四个字段是不是填写最全的,数据相似的话只取数据最全的那条数据这四个字段分别是S1, S2, S3 ,S4,用java实现
时间: 2024-10-16 21:20:50 浏览: 15
《数据结构》期末复习题
在Java中,你可以通过List或者Set等容器来存储你的数据,并遍历这个集合。首先,你需要创建一个内部类或者匿名内部类来定义一个比较规则,用于判断哪一条数据是最全的。这里假设每个数据是一个自定义的Data对象,它包含S1、S2、S3和S4字段。
```java
import java.util.*;
class Data {
String S1;
String S2;
String S3;
String S4;
// 如果需要,可以提供构造函数和getter/setter方法
}
public class Main {
public static void main(String[] args) {
List<Data> dataList = ... // 初始化你的数据列表
// 创建一个辅助方法来检查数据的完整性
Data mostCompleteData = findMostCompleteData(dataList);
// 最终结果打印或做其他处理
System.out.println("最全的数据: " + mostCompleteData);
}
private static Data findMostCompleteData(List<Data> data) {
if (data.isEmpty()) {
return null; // 数据为空,返回null
}
// 使用Optional类避免空指针异常
Optional<Data> maxCompleteOptional = data.stream()
.filter(d -> d.getS1() != null && d.getS2() != null && d.getS3() != null && d.getS4() != null)
.max(Comparator.comparingInt(Data::getFieldsCount)); // 比较数据的完整度
return maxCompleteOptional.orElse(null); // 返回最全的数据或默认值
}
// 计算一个Data对象的字段数
private static int getFieldsCount(Data d) {
return (d.getS1() != null ? 1 : 0) +
(d.getS2() != null ? 1 : 0) +
(d.getS3() != null ? 1 : 0) +
(d.getS4() != null ? 1 : 0);
}
}
```
在这个例子中,我们首先过滤出所有字段都填满的数据,然后通过`Comparator.comparingInt()`方法按照数据的完整度进行排序,最后获取排序后的第一个元素,即最全的数据。
阅读全文