List<String> listA = new Arraylist();
List<String> listB = new Arraylist();
Run Code Online (Sandbox Code Playgroud)
鉴于以上2个列表,我想迭代并在每个元素上调用相同的方法.
选项1
for(String aStr: listA){
someCommonMethodToCall(aStr);
someCommonMethodToCall(aStr);
...
}
for(String bStr: listB){
someCommonMethodToCall(bStr);
someCommonMethodToCall(bStr);
...
}
Run Code Online (Sandbox Code Playgroud)
要么
选项2
List<String> mergedList = new ArrayList();
mergedList.addAll(listA);
mergedList.addAll(listB);
for(String elem: mergedList){
someCommonMethodToCall(elem);
someCommonMethodToCall(elem);
...
}
Run Code Online (Sandbox Code Playgroud)
要么
选项3
我认为选项1应该是最好的.是否有一些Java 8 lambda方法可以做到这一点?此外,性能方面,还有什么比选项1更好?
您可以流式传输列表并将流连接成一个:
Stream.concat(listA.stream(), listB.stream())
.forEach(elem -> {
someCommonMethodToCall(elem);
someOtherMethodToCall(elem);
});
Run Code Online (Sandbox Code Playgroud)
使用 Java 8,您可以使用流:
Stream.concat(listA.stream(), listB.stream())
.forEach(this::someCommonMethodToCall);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2720 次 |
| 最近记录: |