【发布时间】:2019-08-02 14:18:36
【问题描述】:
就最快和最低内存而言,我应该更喜欢哪个版本?
版本 1:
public Map<TYPE, List<Task>> getTaskByType() {
return tasks.stream()
.collect(Collectors.groupingBy(Task::getType,
() -> new EnumMap<>(TYPE.class),
Collectors.toList()));
}
第 2 版:
public Map<TYPE, List<Task>> getTaskByType() {
return tasks.stream().collect(Collectors.groupingBy(Task::getType));
}
还是其他版本?
编辑:
如果您有很多枚举,请使用 版本 1!
【问题讨论】:
-
你真的不应该在这里关心这个 - 除非你分析并看到一个实际的问题。我会使用第二个,因为它更容易阅读 IMO
-
@Eugene 但我很关心这一点,而且我已经有一个用于分组的枚举,为什么不寻找最佳实践呢?
-
最佳实践是通常任何更容易阅读的东西;在大多数情况下,至少
-
EnumMap 的 javadoc 回答了您的问题:这种表示非常紧凑和高效。 * [...] *所有基本操作都在恒定时间内执行。它们可能(尽管不能保证)比 HashMap 对应物更快。。当你想知道 EnumMap 是否比 HashMap 更紧凑和更高效时,为什么不阅读 EnumMap 的文档呢?但同样,这对您的应用的性能或内存消耗产生任何重大影响的可能性非常低。
-
不,结果不一样。一个生成 HashMap,另一个生成 EnumMap。
标签: java java-stream