【发布时间】:2019-06-20 12:20:58
【问题描述】:
我有以下代码:
Stream.of(1, 4, 5).collect(Collectors.toSet());
从toSet()的Javadoc方法一可以读到:
不保证返回的 Set 的类型 (...)
我查看了toSet() 方法的实际实现,乍一看似乎总是返回HashSet(至少在JDK 11 中)。
我知道将来实现可以在不违反合同的情况下更改,但目前是否存在返回与HashSet不同的实现的情况?
【问题讨论】:
-
不,它始终是一个哈希集,但正如文档所说:不要依赖它,永远不要直接依赖于实现细节。如果您出于某种原因需要一个哈希集而没有其他类型的集合起作用,只需转换您得到的集合。
-
记住
Stream是一个接口;可以有任意的实现,而不仅仅是 JRE 提供的那些。
标签: java set java-stream java-11 collectors