当前位置: 首页 > 知识库问答 >
问题:

为什么是java。util。Set有任意的“of”方法吗?[重复]

万俟玉书
2023-03-14

正如您在文档中看到的,在Set中有11个名为of的方法:

static <E> Set<E> of​()
static <E> Set<E> of(E e1)
static <E> Set<E> of(E e1, E e2)
//similar 8 methods like above till e10

现在来到第12个var-args方法:

static <E> Set<E> of(E... elements)

第二个代码段中的方法与第一个代码段中的方法基本相同。我的问题是,为什么Java开发人员在Set接口中包含了11个任意方法(第一个片段)?当我们有var args方法时,我们真的需要这些方法吗?

如果我只向的传递一个参数,将调用哪个方法?

静态


共有1个答案

吕鸿朗
2023-03-14

如果只传递一个参数,static

出于性能原因,创建了11个方法。它们比varargs方法更有效,因为varargs方法需要实例化数组。

 类似资料:
  • 我已经看到了关于基于索引值从中获取对象的其他问题,我明白为什么这是不可能的。但是我还没有找到一个很好的解释来解释为什么不允许获取对象,所以我想我会问。 HashSet由HashMap支持,因此从中获取对象应该非常简单。现在看来,我必须迭代HashSet中的每个项,并测试似乎不必要的相等性。 我可以只使用,但我不需要键:值对,我只需要一个。 例如,假设我有Foo。java: 和: 是不是因为equa

  • 问题内容: 在遍历该 方法时,我看到了方法的多个重载实现: 然后另一个重载方法 当此varargs可以处理其他实现时,为什么以这种方式重载此方法?有什么具体原因吗? 我已经阅读过相同的Javadoc,但是找不到任何令人信服的解释。 问题答案: Varargs方法创建一个数组。 这是有效的,因为创建了隐式数组。是一个设计得非常快的类,因此通过创建所有额外的重载,它们可以在前几种情况下 跳过数组创建步

  • 问题内容: 我只是看着番石榴,发现该方法被重载了12次。 在我看来,他们所需要的只是: 有这么多类似变体的原因是什么? 问题答案: Varargs和泛型不能很好地配合使用。Varargs方法可能会引发带有通用参数的警告,并且重载会阻止该警告,除非在极少数情况下,您想使用来向不可变列表中添加11个以上的项。 资料中的评论说: 这些多达十一。在那之后,您仅获得varargs表单,并且可能伴随任何警告。

  • 收集java时。util。流动流,为什么不调用其方法void close()?

  • 我不知道问号(< code >?)在java里代表,我在做一个小程序,一个Nim-game。我们在一本书里寻求帮助,看到了这样一句话: 我不明白,表示,它可以与if语句有关但您将其放在变量中吗?并且可以是“其他”?(我刚才说的这些事情可能会很误导)

  • 问题内容: 为什么?将迭代器项指针移到第一位置的最佳方法是什么? 问题答案: 为什么? 因为如果强制迭代器具有重置方法,则 每个 迭代器都必须具有重置方法。这给每个迭代器编写者额外的工作。再加上一些迭代器确实很难重置(或者真的很昂贵),并且您不希望用户对其调用reset。文件或流上的迭代器就是很好的例子。 将迭代器项指针移到第一位置的最佳方法是什么? 创建一个新的迭代器。它很少比重置昂贵。