首页 > 解决方案 > 使用 Java 8 进行迭代时从列表对象中删除空间

问题描述

这是我的代码,它返回空格以及一些有效的字符串。但是,我的要求是使空间无效并只收集字符串

List<String> stateCodes = stateList.stream()
                                    .map(state-> physician.getStateDetails().getStateCode())
                                    .collect(Collectors.toList());

当我打印 stateCodes 时,它会返回

[ ,  , 197, 148,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ,  ]

在这里我只需要 [197,148]

标签: javajava-8java-stream

解决方案


过滤掉空值。我不确定String您的输出中是否为空。如果是,您可以使用以下方法过滤掉它们:

List<String> stateCodes =
    stateList.stream()
             .map(state-> physician.getStateDetails().getStateCode())
             .filter(s -> !s.isEmpty())
             .collect(Collectors.toList());

注意:您可以添加trim()(到maporfilter步骤)以过滤掉String仅包含空格的 s:

List<String> stateCodes =
    stateList.stream()
             .map(state-> physician.getStateDetails().getStateCode().trim())
             .filter(s -> !s.isEmpty())
             .collect(Collectors.toList());

推荐阅读