Rumah >Java >javaTutorial >Bagaimana untuk Melaksanakan HashMap dengan Berbilang Nilai Setiap Kunci di Java?

Bagaimana untuk Melaksanakan HashMap dengan Berbilang Nilai Setiap Kunci di Java?

Patricia Arquette
Patricia Arquetteasal
2024-12-11 10:02:121015semak imbas

How to Implement a HashMap with Multiple Values Per Key in Java?

Melaksanakan Peta dengan Berbilang Nilai Setiap Kunci

Dalam senario tertentu, mungkin perlu menyimpan berbilang nilai di bawah kunci yang sama dalam HashMap. Walaupun HashMap standard Java tidak menyokong tingkah laku ini secara asli, terdapat beberapa pendekatan untuk mencapainya:

1. Peta dengan Senarai sebagai Nilai:

Pendekatan ini melibatkan penciptaan HashMap di mana nilainya ialah senarai nilai yang dikehendaki. Contohnya:

Map<String, List<Person>> peopleByForename = new HashMap<>();

Walaupun kaedah ini memberikan fleksibiliti mengenai bilangan nilai yang disimpan di bawah kunci, kaedah ini tidak mempunyai jaminan untuk mempunyai dua nilai yang tepat.

2. Menggunakan Kelas Pembungkus:

Alternatifnya ialah mentakrifkan kelas pembungkus yang mengandungi nilai yang dikehendaki dan menggunakannya sebagai nilai dalam HashMap.

class Wrapper {
    private Person person1;
    private Person person2;

    public Wrapper(Person person1, Person person2) {
        this.person1 = person1;
        this.person2 = person2;
    }

    public Person getPerson1() { return this.person1; }
    public Person getPerson2() { return this.person2; }
}

Map<String, Wrapper> peopleByForename = new HashMap<>();

Kaedah ini memastikan kehadiran tepat dua nilai, tetapi ia memerlukan penciptaan kod boilerplate tambahan untuk pembalut kelas.

3. Menggunakan Tuple:

Kelas tuple merangkum berbilang nilai ke dalam satu objek. Dengan menggunakan tuple sebagai nilai dalam HashMap, anda boleh mencapai berbilang nilai setiap kunci dengan berkesan. Contohnya:

import java.util.Tuple;

Map<String, Tuple2<Person, Person>> peopleByForename = new HashMap<>();

4. Berbilang Peta Bersebelahan:

Akhir sekali, anda juga boleh menggunakan berbilang Peta Hash untuk jenis kunci yang berbeza. Sebagai contoh, anda boleh mencipta:

Map<String, Person> firstPersonByForename = new HashMap<>();
Map<String, Person> secondPersonByForename = new HashMap<>();

Walaupun kaedah ini membenarkan pemisahan nilai yang jelas, kaedah ini memperkenalkan potensi ketidakkonsistenan jika kedua-dua peta tidak dikemas kini secara konsisten.

Pilihan pendekatan bergantung pada keperluan khusus aplikasi. Jika penguatkuasaan ketat dua nilai setiap kunci adalah penting, menggunakan kelas pembalut atau tupel mungkin lebih sesuai. Sebagai alternatif, jika fleksibiliti dalam bilangan nilai dikehendaki, menggunakan peta dengan senarai sebagai nilai mungkin lebih sesuai.

Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan HashMap dengan Berbilang Nilai Setiap Kunci di Java?. 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