一个java list对象集合 有重复的车辆 还有Fault Status 那个车辆有多个这个Fault Status 为2 的就取一个就行了 如果多个Fault Status 为1 为2 就取为1的 Fault Status类型为String型
时间: 2024-05-12 16:19:01 浏览: 59
可以通过以下代码实现:
```
List<Car> cars = new ArrayList<>(); // 假设这是原始的车辆列表
// 去重
Set<String> carIds = new HashSet<>();
List<Car> filteredCars = new ArrayList<>();
for (Car car : cars) {
if (!carIds.contains(car.getId())) {
carIds.add(car.getId());
filteredCars.add(car);
}
}
// 取最优Fault Status
Map<String, String> faultStatusMap = new HashMap<>();
for (Car car : filteredCars) {
String carId = car.getId();
String faultStatus = car.getFaultStatus();
if (faultStatus.equals("2") && !faultStatusMap.containsKey(carId)) {
faultStatusMap.put(carId, faultStatus);
} else if (faultStatus.equals("1")) {
faultStatusMap.put(carId, faultStatus);
}
}
// 根据最优Fault Status过滤车辆
List<Car> result = new ArrayList<>();
for (Car car : filteredCars) {
String carId = car.getId();
String faultStatus = faultStatusMap.get(carId);
if (faultStatus != null && faultStatus.equals(car.getFaultStatus())) {
result.add(car);
}
}
```
其中,假设`Car`类的定义如下:
```
public class Car {
private String id;
private String faultStatus;
public Car(String id, String faultStatus) {
this.id = id;
this.faultStatus = faultStatus;
}
public String getId() {
return id;
}
public String getFaultStatus() {
return faultStatus;
}
}
```
阅读全文