java - 使用 Java Streams 将对象列表转换为带过滤器的字符串列表

标签 java collections java-8 java-stream

从对象列表中获取所有 estd 代码值,其中 iEflag 值为“E”。尝试过这个,但不起作用。

List<String> estdCodeList = applEstdList.stream()
                    .map(StdCode::getEstdCode)
                    .filter(x -> x.getiEflag().equals("E"))
                    .collect(Collectors.toList());

其中 applEstdListStdCode 类型的对象列表。

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());
                    }
                }

最佳答案

您缺少另一个mapping,可能为:

List<String> stdCodeList = applEstdList.stream()
                .map(StdCode::getStdCode)
                .map(a -> a.getiEflag())
                .filter(x -> x.equals("E"))
                .collect(Collectors.toList());

或者将map操作组合到:

List<String> stdCodeList = applEstdList.stream()
                .map(applEstd -> applEstd.getStdCode().getiEflag())
                .filter(iEflag -> iEflag.equals("E"))
                .collect(Collectors.toList());

关于java - 使用 Java Streams 将对象列表转换为带过滤器的字符串列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57086723/

相关文章:

java - Sqoop导入表报错ORA-01843

java - dbus 网络管理器 : supply "/" as DBusInterface parameter in Java

java - 并行处理 Set

java - 使用 Java8 列表到 map

java - 在 Java 8 Lambda-Stream 中使用字符串数组作为值并使用 Enum 作为键创建 Hashmap

java - 有条件地向 Java 8 流添加操作

java - Jersey 2 Swagger 配置

java - 启动 Android 服务时强制关闭(作为服务器套接字)

ios - swift 数组 : subscript with IndexPath - unable to mutate

java - 如何根据类别从List(复杂数据类型)中取出前10条记录?