在最快和最低内存方面,我应该选择哪个版本?
版本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!
答案 0 :(得分:0)
您的第二个代码段将生成一个HashMap(尽管这是非保证的实现细节)。
因此,javadoc of EnumMap回答了您的问题:
此表示非常紧凑且高效。 [...]所有基本操作均在固定时间内执行。它们可能(尽管不能保证)比其HashMap同行更快。
但是我也同意其他评论者的观点:这种行为对应用程序的性能或内存消耗产生重大影响的机会非常低,您应该支持可读性而不是微优化,而不是降低可读性。