Mencipta HashMaps dengan Berbilang Nilai setiap Kunci
Dalam sesetengah senario, mungkin perlu menyimpan berbilang nilai dengan kunci yang sama dalam HashMap . Walaupun HashMap Java tidak menyokong ini secara asli, terdapat beberapa pendekatan alternatif untuk mencapai fungsi ini.
1. Peta dengan Senarai sebagai Nilai
Satu pilihan adalah untuk mencipta HashMap di mana nilai adalah senarai. Ini membolehkan berbilang nilai dikaitkan dengan satu kunci. Contohnya:
Map<String, List<Person>> peopleByForename = new HashMap<>();
2. Kelas Pembalut
Alternatifnya ialah untuk menentukan kelas pembalut yang memegang berbilang nilai. Pembalut ini kemudiannya boleh digunakan sebagai nilai dalam HashMap:
class Wrapper { private Person person1; private Person person2; public Wrapper(Person person1, Person person2) { this.person1 = person1; this.person2 = person2; } // Getter methods } Map<String, Wrapper> peopleByForename = new HashMap<>();
3. Tuples
Jika bahasa pengaturcaraan anda menyokong tupel, anda boleh menggunakannya sebagai kunci atau nilai dalam HashMap. Contohnya:
Map<String, Tuple2<Person, Person>> peopleByForename = new HashMap<>();
4. Peta Berbilang
Akhir sekali, strategi lain ialah menggunakan peta berasingan untuk setiap jenis nilai:
Map<String, Person> firstPersonByForename = new HashMap<>(); Map<String, Person> secondPersonByForename = new HashMap<>();
Contoh
Memandangkan contoh senario HashMap dengan userId, clientID dan timeStamp:
Pilihan 1: Peta dengan Senarai sebagai Nilai
Map<Integer, List<Pair<String, Long>>> data = new HashMap<>(); data.put(1, Arrays.asList(new Pair<>("client-1", System.currentTimeMillis()))); data.put(1, Arrays.asList(new Pair<>("client-2", System.currentTimeMillis())));
Pilihan 2: Kelas Pembungkus
class Data { private Integer userId; private String clientID; private Long timeStamp; public Data(Integer userId, String clientID, Long timeStamp) { this.userId = userId; this.clientID = clientID; this.timeStamp = timeStamp; } } Map<Integer, Data> data = new HashMap<>(); data.put(1, new Data(1, "client-1", System.currentTimeMillis())); data.put(1, new Data(1, "client-2", System.currentTimeMillis()));
Pilihan pendekatan bergantung pada keperluan khusus aplikasi anda dan bahasa pengaturcaraan yang digunakan.
Atas ialah kandungan terperinci Bagaimana untuk Menyimpan Berbilang Nilai dengan Kunci yang Sama dalam HashMap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!