ike*_*8me 4 java lambda java-8 java-stream
你如何将其转换为Java 8 lambda表达式?
List<String> inputStrings = new ArrayList<>(); // say, a list of inputStrings
ArrayList<SomeClass> outputResultStrings = new ArrayList();
for(String anInputString : inputStrings) {
SomeClass someResult = doSomthing(anInputString);
if (someResult != null) {
outputResultStrings.add(someResult);
}
}
Run Code Online (Sandbox Code Playgroud)
您的代码基本上是循环通过输入串,执行doSomthing对他们每个人的(map在Java中的术语),将忽略的结果null(filter在Java中的术语),然后产生这些结果的列表(collect在Java中的术语).当你把它们放在一起时:
List<SomeClass> outputResultStrings =
inputStrings.stream()
.map(SomeClass::doSomething)
.filter(x -> x != null)
.collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
编辑:
根据Tunaki的建议,可以使用以下方法清除非空检查Objects::nonNull:
List<SomeClass> outputResultStrings =
inputStrings.stream()
.map(SomeClass::doSomething)
.filter(Objects::nonNull)
.collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
90 次 |
| 最近记录: |