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

收集的实施。流()

赫连坚
2023-03-14

我已经在JDK 1.8上工作了几天,遇到了一些类似的代码:

List<Integer> list = Arrays.asList(1,2,3,4,5);
list.stream();

现在,对于一直在使用流(java.util.stream)的人来说,它可能看起来既简单又干净,但我找不到实现java.util.Collection.stream()方法的实际类。

当我说列表时,我有以下问题。流():

  1. 我从哪里获取java.util.stream.Stream
  2. 他们是如何在不实际“干扰”现有集合的情况下实现它的?(假设他们没有接触它们)

我确实试着浏览了java的文档。util。AbstractCollection和java。util。AbstractList,但找不到它。

共有3个答案

太叔志文
2023-03-14

您没有在ArrayList中看到它,因为它是在集合中定义的默认方法(您可能已经得到了)。但它可以在ArrayList或任何其他集合中定义,从而覆盖它。例如,它在副本列表中定义为:

    @Override
    public Stream<E> stream() {
        return IntStream.range(0, n).mapToObj(i -> element);
    }

从而覆盖来自Collection的那个;这意味着它不总是来自超类的那个。

潘坚白
2023-03-14

正如其他人所指出的,. stream()方法在Collection接口本身中实现为默认方法,正如您可以在官方留档中的方法签名中看到的那样:

default Stream<E> stream()

如何实现流接口是集合的一个实现细节。然而,为每个集合实现相同的重流接口将需要大量的工作和重复,因此它们使用称为Spliterator的中间抽象。

此SO线程位于<代码>上。stream()可能也值得一读。

慎峻
2023-03-14

Java 8允许在接口中定义默认方法。

<代码>集合

default Stream<E> stream() {
    return StreamSupport.stream(spliterator(), false);
}

他们就是这样添加的。

 类似资料:
  • 问题内容: 为什么这不起作用… Edge接口包括:public ArrayList getEdges(); 即使这样做。 Edge接口包括:public Edge getEdges(); 谢谢,切特 问题答案: 因为while 是的子类型, 不是的子类型。 使用代替。 您可以看一下本教程的4.通配符部分,尽管我建议您通读它,因为它确实很有帮助。

  • Storm 使用 CGroup 来限制 worker 的资源使用, 以保证公平和 QOS. 请注意:CGroups 目前仅支持 Linux 平台(内核版本 2.6.24 及更高版本) 设置 要使用 CGroups, 请确保正确安装 cgroups 并配置 cgroup.有关设置和配置的更多信息, 请访问: https://access.redhat.com/documentation/en-US/

  • 问题内容: 我尝试实现冒泡排序,但是不确定它是否正确。如果您可以看一下它,并且它是气泡式的,并且可以通过更好的方式完成,请不要害羞。这是代码: 问题答案: 这是冒泡排序的正常实现,似乎还可以。可以进行几种优化,但是总体思路是相同的。这里有一些想法: 如果在内循环中未执行任何交换时,外循环有一个迭代,则中断,无用继续 在外循环的每次迭代中,交换内循环的方向-从左至右执行一次,然后从右至左执行一次(这

  • 用户将视频从浏览器上传到服务器上进行存储和回放。首先,从谷歌的理解建议我需要去HTTP直播流(HLS)在这里。但我不确定它在内部是如何运作的? 该工作流由三部分组成,即客户端/服务器端/数据存储端,用于视频的保存和检索。 保存流:我相信我需要插入HLS客户端来发送流数据。客户端本身是否将文件分成多个块,同时发送和维护这些块的链接,每个块指向下一个块?像这样的东西,因为我相信服务器是哑的,将以同样的

  • 我想获取地图的值,找到min值,并为地图的每个条目构造一个新的CodesWitMinValue实例。我希望使用Java11个流,我可以在多行中使用多个流(一个用于min值,一个用于转换)来实现这一点。是否可以使用java 11流和收集器在单行中实现?谢谢。

  • 问题内容: 海 我想建立一个包含聊天的网站。我正在使用PHP,我想要一个代码来实现与php的聊天。有人可以帮助我做到这一点吗?我知道阿贾克斯。我不懂其他语言… 问题答案: 我们目前正在与LiveZilla合作,这非常好,这是公司唯一必须拥有Windows PC的东西。操作员界面位于“ .NET”上 livezilla