Menemukan pasangan yang berurutan
Jika Anda ingin menggunakan pustaka pihak ketiga dan tidak membutuhkan paralelisme, maka jOOλ menawarkan fungsi jendela gaya SQL sebagai berikut
System.out.println(
Seq.of(0, 1, 2, 3, 4)
.window()
.filter(w -> w.lead().isPresent())
.map(w -> tuple(w.value(), w.lead().get())) // alternatively, use your new Pair() class
.toList()
);
Menghasilkan
[(0, 1), (1, 2), (2, 3), (3, 4)]
The lead()Fungsi mengakses nilai berikutnya dalam rangka traversal dari jendela.
Menemukan tripel / quadruples / n-tuple yang berurutan
Sebuah pertanyaan di komentar meminta solusi yang lebih umum, di mana tidak berpasangan tetapi n-tupel (atau mungkin daftar) harus dikumpulkan. Inilah pendekatan alternatif:
int n = 3;
System.out.println(
Seq.of(0, 1, 2, 3, 4)
.window(0, n - 1)
.filter(w -> w.count() == n)
.map(w -> w.window().toList())
.toList()
);
Menghasilkan daftar daftar
[[0, 1, 2], [1, 2, 3], [2, 3, 4]]
Tanpa itu filter(w -> w.count() == n), hasilnya pasti
[[0, 1, 2], [1, 2, 3], [2, 3, 4], [3, 4], [4]]
Penafian: Saya bekerja untuk perusahaan di belakang jOOλ