当前位置: 首页 > 面试题库 >

Collectors.toSet()和HashSet

柴琦
2023-03-14
问题内容

采取以下示例代码行:

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