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

我什么时候应该接受Iterable的参数 与收藏 在Java中?

傅玮
2023-03-14
问题内容

在Java
中使用Iterable<T>vs.有哪些注意事项Collection<T>

例如,考虑实现一种主要涉及包含Foos
的集合以及一些关联的元数据的类型。这种类型的构造函数允许一次性初始化对象列表。(可以稍后设置元数据。)此构造函数应接受哪种类型?Iterable<Foo>Collection<Foo>

此决定有哪些考虑因素?

通过库类型,如下面列出的模式集合ArrayList(这可以从任何被初始化Collection,但 不是
一个Iterable),会导致我使用Collection<Foo>

但是为什么不接受Iterable<Foo>,因为这足以满足初始化需求?为什么Collection消费者要求的功能等级()比严格要求的功能等级(Iterable)高?


问题答案:

许多集合类型以前都存在Iterable<T>(仅在1.5中引入)-几乎没有理由添加一个构造函数来接受Iterable<T>
以及,
Collection<T>但是更改现有构造函数将是一项重大更改。

就个人而言,我会使用它Iterable<T>是否允许您做任何您想做的事情。它对调用者来说更加灵活,尤其是它使您可以使用Google Java
Collections(无疑是类似的库)进行 相对 容易的过滤/投影/等操作。



 类似资料:
  • 我想知道什么时候可以有效地使用。我不确定到底有多有用,有三个原因。 (请将start和end视为整数。) > 如果我想要一个数组,,下面的代码要快得多。 我不认为仅仅获取从到的数字是有用的。我可以将

  • 问题内容: 一个理想的例子是什么时候确切地使用Java中的特定接口,以及适用的任何特定规则。 问题答案: 集合框架是一个不错的选择。 因此,你可以编写如下代码: 如果将来你想使用say 或自己的界面更改实现,那么你要做的就是将第一行更改为: 其余代码将继续进行。

  • 问题内容: 有什么区别?什么时候应该使用容量为1的对抗? 问题答案: SynchronousQueue更像是一个传递,而LinkedBlockingQueue仅允许单个元素。区别在于对SynchronousQueue的put()调用直到有相应的take()调用 才返回 ,但LinkedBlockingQueue的大小为1,则put()调用(对空队列)将立即返回。 我不能说自己曾经直接使用过Sync

  • 问题内容: 我对使用和翻译有疑问。我了解到,在模型中,我应该使用。但是还有其他地方我也应该使用吗?表单定义呢?它们之间是否存在性能差异? 编辑: 还有一件事。有时候,代替被使用。正如文档所述,仅在将字符串显示给用户之前,才将字符串标记为要翻译,并在可能的最新情况下进行翻译,但是我在这里有点困惑,这与功能相似吗?我仍然很难决定在模型和表格中应该使用哪个。 问题答案: ugettext() 与 uge

  • 有没有人遇到过使用场景?由于是默认选项,我看不到你什么时候会使用它。

  • 问题内容: 我知道这是指当前对象。但我不知道何时真正需要使用它。例如,如果我使用x而不是某些方法,会有什么区别吗?可能会引用所考虑方法的局部变量吗?我的意思是仅在此方法中可见的变量。 那呢 我可以使用吗?我应该使用它吗?如果仅使用,默认情况下是否不会将其应用于当前对象? 问题答案: 该关键字在三种情况下,主要使用。第一种也是最常见的是使用方法消除变量引用的歧义。第二种是当需要将当前类实例作为参数传