用jdk 1.8 语法,实现程序,具体要求: 1、创建一个DTO类,名称为AutoMiddleParamsDTO,有两个私有属性,均为String类型,paramsKey,paramsValue;并有set、get方法 2、创建一个方法,入参为list<AutoMiddleParamsDTO> 类型的list 和String类型 strParam,要求用jdk1.8的语法实现list对象.getParamsKey()值等于strParam,且getParamsValue()不为空时,获取list对象getParamsValue()值并赋值给int类型值参数 count;如果getParamsValue()为空,则return String类型值AAA
时间: 2024-03-14 11:45:34 浏览: 58
好的,根据您的要求,以下是Java程序实现:
```java
import java.util.List;
public class AutoMiddleParamsDTO {
private String paramsKey;
private String paramsValue;
public String getParamsKey() {
return paramsKey;
}
public void setParamsKey(String paramsKey) {
this.paramsKey = paramsKey;
}
public String getParamsValue() {
return paramsValue;
}
public void setParamsValue(String paramsValue) {
this.paramsValue = paramsValue;
}
public static Object processList(List<AutoMiddleParamsDTO> list, String strParam) {
int[] count = {0}; // 定义一个数组来存储 int 类型值,以便在 Lambda 表达式中被修改
list.stream()
.filter(dto -> dto.getParamsKey().equals(strParam) && dto.getParamsValue() != null)
.findFirst()
.ifPresent(dto -> {
try {
count[0] = Integer.parseInt(dto.getParamsValue());
} catch (NumberFormatException e) {
count[0] = -1; // 根据需求,在转换失败时,使用 -1 表示错误状态
}
});
return count[0] >= 0 ? count[0] : "AAA"; // 如果 count[0] 小于 0,则说明转换失败,返回 "AAA"
}
}
```
这里的 `AutoMiddleParamsDTO` 类与上一个回答中的相同,不再赘述。
在 `processList` 方法中,首先定义了一个数组 `count` 来存储结果值,以便在 Lambda 表达式中被修改。使用 Java 8 的 Stream API 进行过滤和操作,和上一个回答中的方法类似,但是这里使用了 `ifPresent` 方法来处理结果值。在 Lambda 表达式中,首先尝试将 `dto.getParamsValue()` 转换为整型数值,并将结果赋值给 `count[0]`,如果转换失败,则将 `count[0]` 设为 -1,表示错误状态。
最后根据 `count[0]` 的值,判断是否转换成功,如果成功,则返回 `count[0]` 的值,否则返回 "AAA"。
阅读全文