如果有List,泛型为自定义类型,如何去掉list中空的属性
时间: 2024-02-24 12:58:36 浏览: 71
你可以使用Java 8的Stream API来实现。假设你有一个名为list的List对象,它包含自定义类型的元素,你可以按照以下步骤去掉list中空的属性:
1. 使用stream()方法将List转换成一个流。
2. 使用filter()方法过滤出不为空的元素。
3. 对于每个元素,使用map()方法将空属性去掉。
4. 使用collect()方法将流转换回List。
下面是一个示例代码,其中AssumeNonNull是一个自定义注解,用于标注不可为空的属性。
```
List<MyObject> nonNullList = list.stream()
.filter(obj -> obj != null)
.map(obj -> {
MyObject newObj = new MyObject();
newObj.setProperty1(obj.getProperty1());
newObj.setProperty2(obj.getProperty2());
// 去掉空属性
if (obj.getProperty3() != null) {
newObj.setProperty3(obj.getProperty3());
}
if (obj.getProperty4() != null) {
newObj.setProperty4(obj.getProperty4());
}
// ...
return newObj;
})
.collect(Collectors.toList());
```
在上面的代码中,MyObject是自定义类型的类,假设它有四个属性:property1、property2、property3和property4。如果你想去掉空的property3和property4,可以在map()方法中进行判断和赋值。AssumeNonNull注解可以用于标注不可为空的属性,可以帮助IDE和静态分析工具检查空指针异常。
阅读全文