Rumah >Java >javaTutorial >Bagaimanakah Saya Boleh Terjemahkan Senarai ke Peta Dengan Cekap Menggunakan Java 8 Streams?

Bagaimanakah Saya Boleh Terjemahkan Senarai ke Peta Dengan Cekap Menggunakan Java 8 Streams?

DDD
DDDasal
2024-12-28 13:16:10531semak imbas

How Can I Efficiently Translate Lists to Maps Using Java 8 Streams?

Menterjemah Senarai ke Peta Secara Cekap dengan Java 8 Stream

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:

  • Fungsi pengekstrak kunci (fungsi yang mengambil kunci untuk setiap elemen)
  • Fungsi pengekstrak nilai (fungsi yang mendapatkan semula nilai untuk setiap elemen)

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn