JAVA中,一个list集合中存放的元素为一个对象,怎样筛选出每个元素对象的一个reviewStatus属性值为0的所有元素,返回还是一个list集合
时间: 2025-06-24 18:45:48 浏览: 8
### Java 中筛选 `List` 集合中 `reviewStatus` 属性值为 0 的对象
为了实现这一目标,可以使用 Java 8 提供的流式处理功能(Stream API)。通过调用 `filter()` 方法并传入一个条件表达式来筛选符合条件的对象。以下是完整的代码示例:
```java
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
// 定义实体类 ReviewObject
class ReviewObject {
private int reviewStatus;
public ReviewObject(int reviewStatus) {
this.reviewStatus = reviewStatus;
}
public int getReviewStatus() {
return reviewStatus;
}
@Override
public String toString() {
return "ReviewObject{reviewStatus=" + reviewStatus + '}';
}
}
public class Main {
public static void main(String[] args) {
// 创建测试数据
List<ReviewObject> reviewList = new ArrayList<>();
reviewList.add(new ReviewObject(0));
reviewList.add(new ReviewObject(1));
reviewList.add(new ReviewObject(0));
// 使用 Stream 过滤 reviewStatus=0 的对象
List<ReviewObject> filteredList = reviewList.stream()
.filter(review -> Objects.equals(review.getReviewStatus(), 0))
.collect(java.util.stream.Collectors.toList());
// 打印结果
System.out.println("Filtered list content is: " + filteredList);
}
}
```
#### 解析
1. **创建实体类**
实体类 `ReviewObject` 包含了一个名为 `reviewStatus` 的字段以及相应的 getter 和构造函数。
2. **初始化列表**
初始化一个包含多个 `ReviewObject` 对象的列表作为输入数据。
3. **使用 Stream API 筛选**
调用 `stream()` 方法将列表转为流,并使用 `filter()` 方法指定筛选条件:`Objects.equals(review.getReviewStatus(), 0)`[^1]。此方法确保即使 `getReviewStatus()` 返回 null,也不会抛出异常。
4. **收集结果**
使用 `Collectors.toList()` 将筛选后的流重新转化为列表形式。
5. **打印结果**
输出最终的结果以验证逻辑正确性。
---
#### 注意事项
- 如果需要忽略大小写或其他复杂匹配规则,则可以在 `filter()` 方法中自定义更复杂的逻辑。
- 当涉及大量数据时,建议优化底层集合结构(如将部分数据存储在 Set 或 Map 中),从而提升性能[^3]。
---
阅读全文