Rumah >Java >javaTutorial >Bagaimanakah Saya Boleh Terjemahkan Senarai ke Peta Dengan Cekap Menggunakan Java 8 Streams?
Dalam Java 8, tugas biasa ialah menukar senarai objek kepada peta menggunakan strim dan lambdas. Ini boleh dicapai dalam pelbagai cara, bergantung pada tingkah laku yang diingini dan ketersediaan perpustakaan pihak ketiga seperti Guava.
Java 7 dan Pendekatan Bawah
Secara tradisinya, pemetaan senarai ke peta melibatkan lelaran manual dan tulisan tangan gelung:
private Map<String, Choice> nameMap(List<Choice> choices) { final Map<String, Choice> hashMap = new HashMap<>(); for (final Choice choice : choices) { hashMap.put(choice.getName(), choice); } return hashMap; }
Penyelesaian Berasaskan Jambu Batu
Jambu Batu menyediakan kaedah yang mudah, Maps.uniqueIndex, untuk menjana peta daripada senarai berdasarkan pengekstrak kunci yang ditentukan.
Jambu dengan Jawa 7
private Map<String, Choice> nameMap(List<Choice> choices) { return Maps.uniqueIndex(choices, new Function<Choice, String>() { @Override public String apply(final Choice input) { return input.getName(); } }); }
Guava with Java 8 Lambdas
Memanfaatkan Java 8 lambdas memudahkan lagi kod:
private Map<String, Choice> nameMap(List<Choice> choices) { return Maps.uniqueIndex(choices, Choice::getName); }
Pengumpul kepada Rescue
Kelas Pengumpul Java 8 menawarkan pelaksanaan yang mantap untuk memetakan senarai ke peta. Pengumpul toMap mengambil dua hujah:
Dalam kes ini, kita boleh menggunakan Choice::getName dan Function.identity() untuk mendapatkan semula kunci dan nilai, masing-masing:
Map<String, Choice> result = choices.stream().collect(Collectors.toMap(Choice::getName, Function.identity()));
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Terjemahkan Senarai ke Peta Dengan Cekap Menggunakan Java 8 Streams?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!