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

如何实现Java流?

那谦
2023-03-14
问题内容

我想实施一个Stream<T>

我不想只使用implements Stream<T>,因为我必须实现大量的方法。

可以避免吗?

更具体的,我怎么能流t1t2以及t3例如:

class Foo<T> {
    T t1, t2, t3;

    Foo(T t1, T t2, T t3) {
        this.t1 = t1;
        this.t2 = t2;
        this.t3 = t3;
    }
}

问题答案:

JDK的标准实现Stream是内部类java.util.stream.ReferencePipeline,您不能直接实例化它。

相反,你可以使用java.util.stream.Stream.builder()java.util.stream.StreamSupport.stream(Spliterator<T>, boolean)以及各种1,2种静态工厂方法来创建默认实现的实例。

使用分离器可能是最强大的方法,因为它可以让您懒惰地提供对象,同时如果您的源可以分为多个块,则还可以实现有效的并行化。

此外,如果需要实现自己的 有状态中间操作
(例如由于标准API的缺陷),您还可以将流转换回分离器,将它们包装在自定义分离器中,然后将其转换回流,因为大多数可用的中间操作都是不允许有状态。

原则上,您可以编写自己的流接口实现,但这将非常繁琐。



 类似资料:
  • 问题内容: hashCode()如何实现? 我的假设是它将对象存储位置用作运行哈希函数的初始数字(种子)。然而,这种情况并非如此。 我还研究了Hash:它在内部如何工作?但它不能回答我的问题。 是的,我可以下载SDK,但是在执行此操作并查看代码之前,也许其他人已经知道了。 谢谢 :) 编辑: 我知道它应该被覆盖等等,所以请尝试保持话题:) 问题答案: 当然,它是特定于实现的,但是通常,对象的哈希码

  • 有一个openapi yml文件,其中包含一个简单的获取请求和响应,从这个yml中生成了下面的java文件(以及其他文件)。 这些java文件应该如何使用?如何连接到生成的文件中? 可以简单地将生成的main和controller类复制到主源代码树中,但这似乎不是正确的方法。 --编辑-- 在生成的Controller类中,如何重写存在于接口示例Api中的默认响应?无需修改生成的Controlle

  • 我一直在努力尝试让Bouncy Castle Scrypt进入我的web应用程序进行密码加密。我对Java编程和安全性相当陌生。 我试着查看了Bouncy Castle的Scrypt类文档。然而,我真的很难弄清楚它是如何工作的。它似乎并没有真正给出如何创建类或诸如此类的信息。 我在Stack Exchange和Google上搜索了一下,看看是否有什么地方可以给出一个很好的示例,说明我应该做什么来创

  • 问题内容: 具体来说,在对象引用相等的情况下,==运算符的作用是什么? 如果在比较时引用对相同的对象地址求值,则比较是否返回true?还是利用两个引用的hashCode值确定对象是否相同? 具体来说,我想知道==操作引用 了JVM管理的哪些数据结构以 进行参考比较。==是否依靠OOP进行参考比较? 对我来说不幸的是,JLS没有定义==运算符必须如何工作。Java API文档没有提及==应该做什么(

  • 问题内容: 数组在Java中被实现为对象,对吗?如果是这样,我可以在哪里查看数组类的源代码。我想知道数组中的length变量是否定义为常量,如果是这样,为什么不是全部使用大写字母LENGTH来使代码更易于理解。 问题答案: 尽管从它们继承java.lang.Object的角度来看,数组是Object,但是这些类是作为语言的特殊功能动态创建的。它们未在源代码中定义。 考虑以下数组: 没有这样的源代码

  • 问题内容: 我不确定如何在我的抽象类中实现类似的接口。我有以下示例代码可用来尝试解决这个问题: 我有一个测试类,该类将创建Animal类型的对象,但是我希望在该类中具有一个可比的接口,以使发现的年纪高于低位。我不知道如何去解决这个问题。 问题答案: 您只需要定义即p。然后,您必须以自己喜欢的方式实现该方法。 使用的实现,具有较高级别的动物将获得更高的顺序。我希望你的想法和这个例子。