Saya sarankan Anda untuk mencoba memahami Java 8 secara keseluruhan, yang paling penting dalam kasus Anda itu adalah aliran, lambda dan referensi metode.
Anda tidak boleh mengonversi kode yang ada ke kode Java 8 secara baris demi baris, Anda harus mengekstrak fitur dan mengonversinya.
Apa yang saya identifikasi dalam kasus pertama Anda adalah sebagai berikut:
- Anda ingin menambahkan elemen struktur masukan ke daftar keluaran jika cocok dengan beberapa predikat.
Mari kita lihat bagaimana kita melakukannya, kita bisa melakukannya dengan yang berikut:
List<Player> playersOfTeam = players.stream()
.filter(player -> player.getTeam().equals(teamName))
.collect(Collectors.toList());
Apa yang Anda lakukan di sini adalah:
- Ubah struktur input Anda menjadi aliran (saya berasumsi di sini bahwa ini adalah tipe
Collection<Player>
, sekarang Anda memiliki file Stream<Player>
.
- Filter semua elemen yang tidak diinginkan dengan a
Predicate<Player>
, memetakan setiap pemain ke boolean true jika ingin disimpan.
- Kumpulkan elemen yang dihasilkan dalam daftar, melalui a
Collector
, di sini kita dapat menggunakan salah satu kolektor perpustakaan standar, yaitu Collectors.toList()
.
Ini juga menggabungkan dua poin lainnya:
- Kode terhadap interface, sehingga kode terhadap
List<E>
lebih ArrayList<E>
.
- Gunakan inferensi berlian untuk parameter tipe di
new ArrayList<>()
, Anda juga menggunakan Java 8.
Sekarang ke poin kedua Anda:
Anda sekali lagi ingin mengubah sesuatu dari Java lama ke Java 8 tanpa melihat gambaran yang lebih besar. Bagian ini telah dijawab oleh @IanRoberts , meskipun menurut saya Anda perlu melakukan players.stream().filter(...)...
apa yang dia sarankan.