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.