如何在IntStream上调用map()并返回其他类型?

时间:2014-07-03 23:54:54

标签: java java-stream

我想这样做:

            IntStream.range(0, fileNames.size())
                .map(i -> "mvn deploy:deploy-file" +
                        " -DrepositoryId=" + REPO_ID +
                        " -Durl=" + REPO_URL +
                        " -Dfile=" + LIBS + fileNames.get(i) +
                        " -DgroupId=" + GROUP_ID +
                        " -DartifactId=" + artifactName.get(i) +
                        " -Dversion=" + versionNumbers.get(i) +
                        " -DgeneratePom=true;")
                .collect(Collectors.toList());

但这不会编译,因为map()传递int并返回int。如何从int映射到String

PS:有没有更惯用的方法来编写这段代码?

1 个答案:

答案 0 :(得分:2)

IntStream有一个mapToObj方法。有了它的泛型,不需要施放:

        IntStream.range(0, fileNames.size())
                .mapToObj(i -> "mvn deploy:deploy-file" +
                        " -DrepositoryId=" + REPO_ID +
                        " -Durl=" + REPO_URL +
                        " -Dfile=" + LIBS + fileNames.get(i) +
                        " -DgroupId=" + GROUP_ID +
                        " -DartifactId=" + artifactName.get(i) +
                        " -Dversion=" + versionNumbers.get(i) +
                        " -DgeneratePom=true")
                .map(s -> s + ";")
                .collect(Collectors.toList());