我有两种方法。第一种方法:
public List<String> getCustomObjectsForEach(int n) {
Map<String, Integer> foo = new HashMap<>();
for (CustomObject cb : customObjects) {
// some code
}
List<Map.Entry<String, Integer>> fooMapList = new ArrayList<>(foo.entrySet());
List<String> fooNames = new ArrayList<>();
for (Map.Entry<String, Integer> e : fooMapList) {
fooNames.add(s.getKey());
}
return fooNames;
}
及其流版本:
public List<String> getCustomObjectsStreams(int n) {
return foo
.stream()
.collect(//some code here)
.entrySet()
.stream()
.map(Map.Entry::getKey)
.collect(Collectors.toList());
}
我用JMH来测试它们的性能,每个循环花费了流方法运行所需时间的近两倍。请告知为什么这可能是因为我一直在阅读,大多数情况下流比每个循环都要慢。是因为流链接在一起并且每个循环都分开了吗?
仅当您具有大致等效的代码时,该规则才计数。