我有一个studentlogin数组,其中name是键,value是value
"studentLogin" : [
{
"name" : "firstName_key",
"value" : "<actual first Name value>"
},
{
"name" : "lastName_key",
"value" : "<actual last Name value>"
},
....
]
我有一个方法,我把studentlogin列表作为一个输入参数,我需要检查firstname(key)和lastname(key)是否在同一个索引中,如果是,那么我需要从同一个索引中连接firstname和lastname的实际值。
我写了下面的方法,但使用两个流,我想把它转换成一个流。
public String convertStudentLoginToFullName(List<StudentLogin> studentLogin) {
if (null != studentLogin) {
String firstName = studentLogin.stream()
.filter(x -> "firstName_key".equalsIgnoreCase(x.getName()))
.map(x->x.getValue())
.findFirst()
.orElse(null);
String lastName = studentLogin.stream()
.filter(x -> "lastName_key".equalsIgnoreCase(x.getName()))
.map(x -> x.getValue())
.findFirst()
.orElse(null);
String fullName=firstName+" "+lastName;
return fullName;
}
}
return null;
}
2条答案
按热度按时间neekobn81#
一种方法是转换你的
StudentLogin
到Map
第一:注意如果有多个
StudentLogin
我使用了merge函数(old, new) -> old
解决冲突。总是使用旧值来匹配您在原始代码中所做的操作-取第一个匹配的值firstName_key
以及lastName_key
.现在,您可以访问
studentLoginMap
如果名和姓都存在,则连接:cmssoen22#
在这种情况下,您可以使用
Collectors.toMap(keyMapper,valueMapper)
具体如下:另请参见:使用冗余值反转贴图以生成多重贴图