Saya sedang bermain-main dengan Java 8 lambdas untuk dengan mudah menyaring koleksi. Tetapi saya tidak menemukan cara ringkas untuk mengambil hasilnya sebagai daftar baru dalam pernyataan yang sama. Inilah pendekatan saya yang paling ringkas sejauh ini:
List<Long> sourceLongList = Arrays.asList(1L, 10L, 50L, 80L, 100L, 120L, 133L, 333L);
List<Long> targetLongList = new ArrayList<>();
sourceLongList.stream().filter(l -> l > 100).forEach(targetLongList::add);
Contoh di internet tidak menjawab pertanyaan saya karena berhenti tanpa menghasilkan daftar hasil baru. Pasti ada cara yang lebih ringkas. Saya akan diharapkan, bahwa Stream
kelas memiliki metode seperti toList()
, toSet()
...
Apakah ada cara agar variabel targetLongList
dapat langsung ditugaskan oleh baris ketiga?
List<Long> targetLongList = sourceLongList.stream().collect(Collectors.toList());
sourceLongList
setelah itu adaCollection.removeIf(…)
untuk kenyamanan.