1 回答
TA贡献1735条经验 获得超5个赞
我不是100%确定,但我相信你看到一些这种行为的原因是因为你在哪里对流进行排序,是因为流经流的数据的“时间”。
您的前额是将它们添加到已找到的单词列表中 - 但请记住,在调用前额之前不会评估任何数据。这意味着这些项目仅在整个集合流经前台时才被添加到列表中。在 foreach 之前发生的主筛选器可能会看到一些重复,因为它尝试按尚未真正存在的列表进行筛选。
排序是给它带来麻烦,因为它可以阻止数据流 - 在看到每个元素之前,不能保证对列表进行排序。它不完全是一个终止操作,但它确实会延迟事情,直到所有元素通过。懒惰评估是一件很棒的事情,但它可能很棘手,通常你真的需要确保像排序这样的东西是你想要的,然后再走这条路。
综上所述,如果您试图避免重复,那么有更好的方法可以做到这一点(stream具有一个功能,可以很好地为您完成)。.distinct()
我已经编写了您在此处尝试执行的其他实现,该实现产生了以下结果。
abel able bale bela elba
alger glare lager large regal
angel angle galen glean lange
caret carte cater crate trace
elan lane lean lena neal
evil levi live veil vile
如果你愿意,我可以和你分享这个 - 但我得到的印象是,这是为了某些性质的任务,你正在自己挖掘它。如果是这样的话,对你有好处。
如果您想要一些提示或从某人那里反弹问题,请随时给我发DM,我会很乐意为您提供帮助。之后,我将编辑这篇文章并发布我用来生成上面的块的代码。
添加回答
举报