问题标签 [java-stream]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
40730 浏览

java - Stream and lazy evaluation

I'm reading from the java 8 API on the stream abstraction but I don't understand this sentence very well:

Intermediate operations return a new stream. They are always lazy; executing an intermediate operation such as filter() does not actually perform any filtering, but instead creates a new stream that, when traversed, contains the elements of the initial stream that match the given predicate. Traversal of the pipeline source does not begin until the terminal operation of the pipeline is executed.

When a filter operation creates a new stream does that stream contain a filtered element? It seems to understand that the stream contains elements only when it is traversed i.e with a terminal operation. But, then, what does the filtered stream contain? I'm confused!!!

0 投票
2 回答
55100 浏览

java - Java 8 流映射列出

鉴于我有一些函数需要两个参数并返回一个值,是否可以将 Map 转换为 Stream 中的 List 作为非终端操作?我找到的最近的方法是在地图上使用 forEach 创建实例并将它们添加到预定义的列表中,然后从该列表中启动一个新的流。还是我只是错过了什么?

例如:经典的“在长长的单词列表中找到 3 个最常出现的单词”

(现在我想流式传输该地图的 entrySet)

0 投票
1 回答
1009 浏览

java - 矩阵乘法java 1.8

您认为可以使用 Java 1.8 中的新 Stream 接口实现稀疏矩阵运算吗?如果是,我们需要如何实现矩阵和操作。显然,我正在寻找它最终能够使用“自动”并行化。

0 投票
1 回答
35695 浏览

java - 流和不同的操作

我有以下代码:

但我不明白为什么distinct返回 3 而不是 2。

0 投票
1 回答
56 浏览

java - 关于流定义

API 参考中是这样写的:

流是支持顺序和并行聚合操作的元素序列

然后,

在此示例中,小部件是一个集合。我们通过 Collection.stream() 创建一个 Widget 对象流,对其进行过滤以生成仅包含红色小部件的流,然后将其转换为表示每个红色小部件重量的 int 值流。然后将该流相加以产生总重量。

再次来自 Java 教程

流是一系列元素。与集合不同,它不是存储元素的数据结构

那么,流是否包含元素?

0 投票
2 回答
8326 浏览

java - 流有序/无序问题

我有以下代码:

我想通过以下方式对集合进行排序:

forEach返回总是订购的集合!

然后我对这里的以下句子还有另一个疑问:

对于顺序流,遇到顺序的存在与否不会影响性能,只会影响确定性。如果流是有序的,在相同的源上重复执行相同的流管道将产生相同的结果;如果没有排序,重复执行可能会产生不同的结果。

事实上,如果我在无序流上尝试此代码,结果总是相同的,并且永远不会产生不同的结果:

我真的不明白这个API部分......

0 投票
1 回答
308 浏览

java - 如何使用流而不是收藏或列表?

考虑我目前的以下课程:

现在看看countDataSize

  • 我有作为输入Collection<Drawable>,因为我不关心顺序,我只想总结它们的大小。
  • 我使用drawables.stream(),如果我传入一个Stream<Drawable>参数,那将是多余的。

接下来看看putAllData

  • 正如我在这里所说List<Drawable> drawables的那样,这次的顺序确实很重要。
  • drawables.stream()用来访问它们,这是按顺序发生的forEachOrdered()

我想Stream<Drawable>用作输入,但是传递 aCollection<Drawable>甚至List<Drawable>工作吗?如果是这样,我如何确保在第一种情况下顺序无关紧要,而在第二种情况下很重要?

0 投票
2 回答
479 浏览

java - 通过 Streams 在双数组上调用构造函数

我想知道 Java 8 是否可以实现以下功能:

我想使用Streams 来调用构造函数,我知道Arrays.stream(patches)它会给我 a Stream<Patch[]>,所以不幸的是我认为这没有任何用处(但在我的想法中)。

在旧 Java 中,这可以归结为简单的:

我认为最有用的方法是将 a 破坏T[][]为 a 的方法Stream<T>

重新表述我真正想要的内容:将双for循环转换为使用 Java 8 的语句,很可能涉及Stream.

0 投票
8 回答
119040 浏览

java - 在单行中获取 Stream/List 的最后一个元素

如何在以下代码中获取流或列表的最后一个元素?

哪里data.careasList<CArea>

正如你所看到的,获得第一个元素filter并不难。

然而,在单行中获取最后一个元素是一个真正的痛苦:

  • 看来我无法直接从Stream. (这只对有限流有意义)
  • 似乎您也无法从界面中获取诸如first()和之类的东西,这确实很痛苦。last()List

我看不到在接口中不提供first()andlast()方法的任何论据List,因为那里的元素是有序的,而且大小是已知的。

但根据原始答案:如何获得有限的最后一个元素Stream

就个人而言,这是我能得到的最接近的:

但是,它确实涉及indexOf在每个元素上使用 an,这很可能不是您通常想要的,因为它会影响性能。

0 投票
1 回答
461 浏览

java - 为什么流无法识别我的类型?

这是例外

我在 jdk 8 中运行它,并将以下内容放入 mypom.xml中,现在它似乎可以识别 lambda 的

问题(根据我从 netbeans 收集的信息)是它被a视为Object不是一个Activity,所以它看不到.completed(),我该如何解决这个问题?