使用Lambda表达式拆分CSV文件

时间:2019-03-29 12:44:02

标签: java java-8 refactoring java-stream

我正在尝试重构此方法以使用lambda表达式:

 public List<String> getHttpsLinksFromCsvList() {
        List<String> data = getDataFromCsv();
        List<String> httpLinks = new ArrayList<>();

        data.forEach(System.out::println);
        for (String value : data) {
            String[] arrayString = value.split(COMMA_DELIMITER);

            for (String item : arrayString) {
                if (item.endsWith(".git")) {
                    httpLinks.add(item);
                }
            }
        }

        //httpLinks.forEach(System.out::println);

        return httpLinks;
    }

理想情况下,我想删除两个嵌套的for循环并对其进行一些优化。有可能吗?

1 个答案:

答案 0 :(得分:2)

尝试一下:

List<String> httpLinks = getDataFromCsv().stream()
        .map(value -> value.split(COMMA_DELIMITER))
        .flatMap(Arrays::stream)
        .filter(item -> item.endsWith(".git"))
        .collect(Collectors.toList());