Rumah >Java >javaTutorial >Bagaimanakah Saya Boleh Menukar Senarai Java kepada Peta Menggunakan Strim dengan Cekap?

Bagaimanakah Saya Boleh Menukar Senarai Java kepada Peta Menggunakan Strim dengan Cekap?

Barbara Streisand
Barbara Streisandasal
2024-11-28 19:31:11538semak imbas

How Can I Efficiently Convert a Java List to a Map Using Streams?

Menukar Senarai kepada Peta dalam Java

Di Jawa, menukar Senarai kepada Peta menawarkan beberapa faedah, termasuk pengambilan data yang cekap, organisasi berstruktur dan perwakilan ringkas. Artikel ini meneroka pendekatan optimum untuk menukar Senarai kepada Peta.

Pendekatan Penukaran Optimum

Dengan pengenalan Java 8, proses penukaran telah dipermudahkan dengan ketara menggunakan aliran dan kelas Pengumpul. Pendekatan berikut menunjukkan cara untuk mencapai penukaran senarai ke peta dalam satu baris:

Map<String, Item> map = list.stream().collect(Collectors.toMap(Item::getKey, item -> item));

Faedah Pendekatan Java 8

Pendekatan ini menawarkan beberapa kelebihan :

  • Keringkas: Sintaks satu baris menghapuskan keperluan untuk lelaran manual dan pemetaan eksplisit.
  • Kecekapan: Menstrim elemen proses dengan malas, yang mengoptimumkan penggunaan memori dan mengurangkan masa pengiraan.
  • Keterlanjutan: Kelas Pengumpul menyediakan pelbagai operasi pengumpulan, membolehkan untuk disesuaikan penukaran.

Demonstrasi Kod

Coretan kod berikut memberikan contoh menggunakan strim untuk menukar objek Senarai Item kepada Peta:

import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

public class Test {

    public static void main(String[] args) {
        List<Item> list = Arrays.asList(new Item(1), new Item(2), new Item(3), new Item(4));

        Map<String, Item> map = list.stream()
                .collect(Collectors.toMap(Item::getKey, item -> item));

        map.forEach((k, v) -> System.out.println(k + " => " + v));
    }
}

class Item {

    private final int i;

    public Item(int i) {
        this.i = i;
    }

    public String getKey() {
        return "Key-" + i;
    }

    @Override
    public String toString() {
        return "Item [i=" + i + "]";
    }
}

Output:

Key-1 => Item [i=1]
Key-2 => Item [i=2]
Key-3 => Item [i=3]
Key-4 => Item [i=4]

Mengendalikan Kekunci Pendua

Dalam kes di mana nilai kunci pendua wujud dalam Senarai, anda boleh menentukan operator gabungan apabila menggunakan kaedah Collectors.toMap. Operator ini menentukan cara kunci pendua dikendalikan. Sebagai contoh, untuk menjumlahkan nilai yang dikaitkan dengan kunci pendua, anda akan menggunakan operator berikut:

Map<String, Integer> map = intList.stream()
        .collect(Collectors.toMap(i -> String.valueOf(i % 3), i -> i, Integer::sum));

Ini akan menghasilkan:

0 => 9 (i.e. 3 + 6)
1 => 5 (i.e. 1 + 4)
2 => 7 (i.e. 2 + 5)

Kesimpulan

Menggunakan strim dan kelas Pengumpul menyediakan kaedah yang cekap dan ringkas untuk menukar Senarai kepada Peta dalam Java. Pendekatan ini memudahkan proses penukaran dan menawarkan fleksibiliti tambahan dalam mengendalikan kunci pendua.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menukar Senarai Java kepada Peta Menggunakan Strim dengan Cekap?. 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