1 回答

TA貢獻1735條經(jīng)驗 獲得超5個贊
我不是100%確定,但我相信你看到一些這種行為的原因是因為你在哪里對流進行排序,是因為流經(jīng)流的數(shù)據(jù)的“時間”。
您的前額是將它們添加到已找到的單詞列表中 - 但請記住,在調(diào)用前額之前不會評估任何數(shù)據(jù)。這意味著這些項目僅在整個集合流經(jīng)前臺時才被添加到列表中。在 foreach 之前發(fā)生的主篩選器可能會看到一些重復(fù),因為它嘗試按尚未真正存在的列表進行篩選。
排序是給它帶來麻煩,因為它可以阻止數(shù)據(jù)流 - 在看到每個元素之前,不能保證對列表進行排序。它不完全是一個終止操作,但它確實會延遲事情,直到所有元素通過。懶惰評估是一件很棒的事情,但它可能很棘手,通常你真的需要確保像排序這樣的東西是你想要的,然后再走這條路。
綜上所述,如果您試圖避免重復(fù),那么有更好的方法可以做到這一點(stream具有一個功能,可以很好地為您完成)。.distinct()
我已經(jīng)編寫了您在此處嘗試執(zhí)行的其他實現(xiàn),該實現(xiàn)產(chǎn)生了以下結(jié)果。
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
如果你愿意,我可以和你分享這個 - 但我得到的印象是,這是為了某些性質(zhì)的任務(wù),你正在自己挖掘它。如果是這樣的話,對你有好處。
如果您想要一些提示或從某人那里反彈問題,請隨時給我發(fā)DM,我會很樂意為您提供幫助。之后,我將編輯這篇文章并發(fā)布我用來生成上面的塊的代碼。
添加回答
舉報