【发布时间】:2020-01-15 05:59:43
【问题描述】:
Java 的 Stream API 或 RxJava 之类的流如何在程序集级别表示?
I.E.
List<String> myList =
Arrays.asList("a1", "a2", "b1", "c2", "c1");
myList
.stream()
.filter(s -> s.startsWith("c"))
.map(String::toUpperCase)
.sorted()
.forEach(System.out::println);
【问题讨论】:
-
问对象和方法是如何表示的比较合适。当你理解了这些——而且它们是大主题——你就会理解流,因为它们就是由这些构成的。考虑买一本关于编译器构造的好书。 SO 不是尝试学习整个本科 CS 课程所涵盖内容的最佳场所。
-
Java 流不是语言特性。它们是标准的 Java 代码,编写为标准的类和方法。他们没有什么特别的。流类有一个操作管道,它的许多方法(非终端方法)只是记住要在该管道中执行的操作。一旦您进行终端操作,它将简单地迭代数据集(可能是多线程的)并按顺序在每个元素上应用操作管道。就是这样。
-
确定您是在询问流 api 而不是 lambdas 或方法引用?因为这两个是这里唯一的语言特征。流只是标准的 Java 方法和类。
标签: java assembly compiler-construction java-stream rx-java