相关疑难解决方法(0)

Collectors.toSet()和HashSet

采取以下示例代码行:

Set<String> someSet = someColletion.stream().map(p -> p.toString()).collect(Collectors.toSet());
Run Code Online (Sandbox Code Playgroud)

我想要一个HashSet.把调试器带到代码中,我确实得到了一个HashSet.我看了看java.util.stream.Collectors.toSet()下面的代码:

public static <T> Collector<T, ?, Set<T>> toSet() {
    return new CollectorImpl<>((Supplier<Set<T>>) HashSet::new, Set::add,
                               (left, right) -> { left.addAll(right); return left; },
                               CH_UNORDERED_ID);
}
Run Code Online (Sandbox Code Playgroud)

合同保证 a Set,实施决定a HashSet; 看似合理.但是,我的实现需要由a保证的恒定时间查找HashSet,而不仅仅是任何旧的查找Set.如果执行toSet()决定使用say a FooSet,这完全在其权利范围内,那么我的实现就会受到影响.

这个问题的最佳实践解决方案是什么?

java java-8 java-stream collectors

63
推荐指数
1
解决办法
3万
查看次数

编程到接口是什么意思?

我一直听到大多数与节目相关的网站上的声明:

编程到接口而不是实现

但是我不明白其含义?
例子会有所帮助.

编辑:我收到了很多好的答案,所以你可以用一些代码片段来补充它,以便更好地理解这个主题.谢谢!

java interface

19
推荐指数
5
解决办法
5911
查看次数

标签 统计

java ×2

collectors ×1

interface ×1

java-8 ×1

java-stream ×1