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

为什么没有getFirst(iterable)方法?

毛宏达
2023-03-14
问题内容

Iterables提供了两种方法getLast

 public static <T> T getLast(Iterable<T> iterable);
 public static <T> T getLast(Iterable<T> iterable, @Nullable T defaultValue);

但只有一个 getFirst

 public static <T> T getFirst(Iterable<T> iterable, @Nullable T defaultValue);

是否存在任何破坏对称性的设计/实现原因?


问题答案:

我认为要点是,没有理由getFirst(iterable)可以使用来完成此操作iterable.iterator().next()。Guava尽力使API保持较小,因此没有添加可以/应该以其他方式轻松完成的事情。

另一方面,还没有一种机制可以测试iterable是否为空,如果是,则返回默认值而不是第一个值。因此,getFirst(iterable, default)

同样,没有简单的方法来获取最后一个元素,因此getLast(iterable)getLast(iterable, default)



 类似资料:
  • 问题内容: 虽然有一种方法没有。这是为什么?文件在完成后会自动关闭吗? 谢谢! 问题答案: 该类的javadoc将类描述为: 文件和目录路径名的抽象表示。 只是路径名的一种表示形式,有一些关于文件系统(如)和目录处理的方法,但是实际的流输入和输出在其他地方完成。流可以打开和关闭,文件不能。 (我个人的看法是,不幸的是Sun后来继续创建,给命名不一致带来了很大的困惑。)

  • 当使用Java8流时,获取一个列表、从中创建一个流、处理业务并将其转换回来是很常见的。类似于: 有什么想法吗?

  • 本质上,它包装了,确保了最大容量,并提供了一些其他有用的特性。更好的方法是直接将其实现为。 现在,为了方便起见,我认为最好实现,这样,如果您想要循环它,就可以使用增强的for-loops。(我的类还提供了方法,因此我认为是合理的。) 接口提供以下功能(省略了javadoc): null

  • 问题内容: 这确实是一个好奇心,而不是一个问题。 为什么类没有方法?现在看来似乎应该当你认为它有一个事实,,等方法。 我知道您可以执行以下操作: 但是为什么没有方法呢? 问题答案: 原因是Scanner类旨在读取以空格分隔的令牌。这是包装基础输入流的便捷类。在扫描仪之前,您所能做的只是读取单个字节,如果要读取单词或行,这将是一个很大的麻烦。使用Scanner,您可以传入System.in,它会执行

  • 我启动了一个国际象棋项目,使用一些旧代码绘制地图,基本上所有内容都是复制粘贴的。问题是方块没有出现?我试着修了一会儿,但没有找到解决办法。下面可能是三种最重要的方法,并简要介绍了整个项目。有些是德语的。 https://drive.google.com/file/d/1nnZHLB0Ycy04eMyYbEmduMwbGhVLZ2VB/view?usp=sharing

  • 在Java的LinkedList实现中,我看到两个方法在我看来具有相同的功能。 < code>getFirst() -返回列表中的第一个元素。 --检索但不删除此列表的第一个元素,如果此列表为空,则返回null。 这两个元素都会获得指向LinkedList中First元素的指针,而不会对其进行任何更改。那么,有什么区别? 我看到的唯一区别是,如果列表为空,则< code>peekFirst返回<