采取以下示例代码行:
Set<String> someSet = someColletion.stream().map(p -> p.toString()).collect(Collectors.toSet());
我想要一个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);
}
合同 担保 a Set
,实施决定a HashSet
; 似乎是合理的。但是,我的实现需要a HashSet
而不是仅任何old
保证的恒定时间查找Set
。如果的实现toSet()
决定说a FooSet
,而该实现完全在其权限之内,那么我的实现就会受到影响。
解决此问题的最佳实践是什么?
如果您想要保证HashSet
,请使用Collectors.toCollection(HashSet::new)
。
接口不promise实现是否允许元素。每个实现都应该在其文档中声明这一点。 promise返回的实现,但显式地“不保证返回的的类型、可变性、可序列化或线程安全性”。空-没有提到安全。 OpenJDK中的当前实现总是使用,它允许空元素,但这在将来可能会发生变化,其他实现可能会做不同的操作。 如果实现禁止元素,则它会在不同时间抛出,特别是在尝试期间。如果决定使用不容忍Null的实现,那么对调用将引发。
如果Equals方法返回false,即返回false。所以这些值应该相加两次,但只相加一次。谁能解释一下。我在谷歌上搜索并清除了关于HashCode和equals contract的概念,但在这里我失败了。
本文向大家介绍HashMap 和 HashSet区别?相关面试题,主要包含被问及HashMap 和 HashSet区别?时的应答技巧和注意事项,需要的朋友参考一下 如果你看过 `HashSet` 源码的话就应该知道: HashSet 底层就是基于 HashMap 实现的。(HashSet 的源码非常非常少,因为除了 `clone() `、`writeObject()`、`readObject()`
问题内容: 关于它们有很多传说。我想知道真相。以下两个示例之间有什么区别? 问题答案: 不确定从何处获得传说,但: 提交按钮 与: IE6将在标记之间提交此按钮的所有文本,其他浏览器将仅提交值。使用可使您在按钮的设计上享有更大的布局自由度。从各种意图和目的看,它乍一看似乎很棒,但是各种浏览器怪癖使它有时很难使用。 在您的示例中,IE6将发送到服务器,而其他大多数浏览器将不发送任何内容。要使其跨浏览
什么区别以及如何正确重写代码?
本文向大家介绍HashMap 和 HashSet的区别,包括了HashMap 和 HashSet的区别的使用技巧和注意事项,需要的朋友参考一下 HashMap和HashSet的区别是Java面试中最常被问到的问题。如果没有涉及到Collection框架以及多线程的面试,可以说是不完整。而Collection框架的问题不涉及到HashSet和HashMap,也可以说是不完整。HashMap和Hash