【发布时间】:2019-11-26 22:18:15
【问题描述】:
从对象列表中获取所有 estd 代码值,其中iEflag 值为“E”。试过了,但没用。
List<String> estdCodeList = applEstdList.stream()
.map(StdCode::getEstdCode)
.filter(x -> x.getiEflag().equals("E"))
.collect(Collectors.toList());
其中applEstdList,StdCode 类型的对象列表。
public class StdCode implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
private String applnCode;
private String estdCode;
private String iEflag;
}
我尝试使用 Java Streams 转换此代码。在此处使用 Stream 是否有任何性能优势?
List<String> iEflagIsE = new ArrayList<String>();
List<String> iEflagIsNotE = new ArrayList<String>();
//Creating the respective exclusion inclusion list
for(ApplicationEstCode applnList :applEstList){
if(applnList.getiEflag().equals("E")){
iEflagIsE.add(applnList.getEstCode());
}else{
iEflagIsNotE.add(applnList.getEstCode());
}
}
【问题讨论】:
-
哪个对象带有
getiEflag()方法?applEstdList列表的类型是什么? -
同一个对象,StdCode
-
applEstdList列表的类型是什么?先看看这个,看看如何发布一个可重现的例子:stackoverflow.com/help/minimal-reproducible-example -
@RavindraRanwala 如问题
applEstdList,StdCode类型的对象列表中提到的,虽然声明了List的类型,但几乎可以推断stdCode不是String,给定过滤操作x.getiEflag().equals("E")并收集到List<String>,缺少映射操作。 @user630209 与使用中的基本属性共享StdCode类模型将进一步改善问题。 -
@RavindraRanwala 用 StdCode 对象更新了问题。
标签: java collections java-8 java-stream