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
Lepaskan: 2024-12-28 13:16:10
asal
532 orang telah melayarinya

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;
}
Salin selepas log masuk

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();
        }

    });
}
Salin selepas log masuk

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);
}
Salin selepas log masuk

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()));
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan