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

为什么toList()不直接存在于Java8流[duplicate]中

孟文栋
2023-03-14

流已经提供了ToArray()方法来转换为数组,那么为什么不提供ToList()ToSet()

共有1个答案

汪皓
2023-03-14

因为您不知道list实现是什么样子的:

  • 它会是可变的吗?
  • 您能更改它的大小吗?

事实上,即使collectors.tolist()也不能保证:

没有对返回的列表的类型、可变性、可序列化或线程安全性的保证;如果需要对返回的列表进行更多的控制,请使用toCollection(供应商)。

因此,提供一个通用的.toList()方法可能适合某些人的某些用法,但它不可能适合所有人的所有用法。当然,这同样适用于collectors.toset()

不过,数组不是问题:您知道可以使用它们做什么。

 类似资料:
  • null 所以我想我有几个问题是基于我的发现。 如果不能重用流,那么何时返回流的实例以供以后使用? 是否可以克隆流,以便重用它们而不会导致?

  • 问题内容: 谁能解释我为什么不应该使用在窗口内直接绘制的方法,而应该在内部使用方法? 提前致谢。 问题答案: 三大原因… 顶层容器不是双缓冲的,在重新绘制框架时会导致闪烁,是的,您可以实现自己的双缓冲,但是… 在框架内绘画不会考虑框架边框,这意味着可以在框架边框下绘画。边框也取决于平台/外观,这意味着尺寸会发生变化 对于Swing窗口,窗口上已经存在一些组件,这意味着它们在大多数情况下都被覆盖(或

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

  • 我有这个方法,它在Dart 2中编译没有问题。但是,在运行时,我得到以下错误 输入

  • 考虑到我有2个CPU核心的事实,并行版本不是应该更快吗?有人能给我一个提示为什么并行版本比较慢吗?

  • 每当有人在这里询问关于的问题时,总会有一个相当笼统的回答:“C++就是这么做的,使用delete[]”。作为一个普通的C背景,我不明白为什么需要一个不同的调用。 使用/,您的选项是获取一个指向连续内存块的指针,并释放一个连续内存块。在实现land中会出现一些东西,并知道您根据基址分配的块的大小,以便在您必须释放它时使用。 没有函数。我看到过一些与此切线相关的其他问题的疯狂理论,比如调用只会释放数组