6
ワンライナーでストリーム/リストの最後の要素を取得する
次のコードでストリームまたはリストの最後の要素を取得するにはどうすればよいですか? どこdata.careasでList<CArea>: CArea first = data.careas.stream() .filter(c -> c.bbox.orientationHorizontal).findFirst().get(); CArea last = data.careas.stream() .filter(c -> c.bbox.orientationHorizontal) .collect(Collectors.toList()).; //how to? ご覧のとおり、最初の要素を特定filterので取得することは難しくありません。 ただし、ワンライナーの最後の要素を取得するのは本当に大変です。 から直接入手できないようStreamです。(それは有限のストリームに対してのみ意味があります) また、インターフェイスのようなものを取得できないようfirst()で、これは本当に苦痛です。last()List インターフェース内にfirst()とlast()メソッドを提供しないことについてはList、そこにある要素が順序付けられており、サイズがわかっているため、私は何の議論も見ていません。 しかし、元の答えのとおり:有限の最後の要素を取得する方法はStream? 個人的に、これは私が得ることができる最も近いものです: int lastIndex = data.careas.stream() .filter(c -> c.bbox.orientationHorizontal) .mapToInt(c -> data.careas.indexOf(c)).max().getAsInt(); CArea last = data.careas.get(lastIndex); ただしindexOf、すべての要素でon を使用する必要があります。これは、パフォーマンスを損なう可能性があるため、通常は必要ない可能性があります。
118
java
list
java-8
java-stream