Maison > Java > javaDidacticiel > Comment puis-je stocker plusieurs valeurs par clé dans un HashMap ?

Comment puis-je stocker plusieurs valeurs par clé dans un HashMap ?

DDD
Libérer: 2024-12-21 03:33:14
original
623 Les gens l'ont consulté

How Can I Store Multiple Values per Key in a HashMap?

HashMap pour stocker plusieurs valeurs par clé

HashMap est une structure de données largement utilisée qui mappe les clés aux valeurs. Cependant, il est généralement conçu pour stocker une seule valeur pour chaque clé. Cette limitation peut ne pas toujours correspondre aux exigences du monde réel, où il est nécessaire de stocker plusieurs valeurs sous la même clé.

Approches pour implémenter plusieurs valeurs dans une HashMap

Si l'exigence est de stocker exactement deux valeurs par clé, plusieurs approches peuvent être envisagées :

  1. Mapper avec Liste comme Value : Cela implique l'utilisation d'un Map> structure des données. Chaque clé de la carte correspond à une liste de valeurs, permettant d'associer plusieurs valeurs à une seule clé.
  2. Classe Wrapper : Une classe wrapper peut être créée pour encapsuler les deux valeurs. La carte stocke ensuite les instances de cette classe wrapper sous forme de valeurs, offrant ainsi un moyen de récupérer les deux valeurs simultanément.
  3. Classe Tuple : Une classe tuple peut être utilisée, qui est une classe intégrée ou bibliothèque externe qui représente une collection d’éléments. La carte peut utiliser un tuple comme valeur, lui permettant de stocker exactement deux valeurs dans un seul objet.

Exemples d'implémentation

Utilisation de la liste comme valeur :

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

// Populate the HashMap
List<Person> people = new ArrayList<>();
people.add(new Person("Bob Smith"));
people.add(new Person("Bob Jones"));

peopleByForename.put("Bob", people);

// Retrieve values
List<Person> bobs = peopleByForename.get("Bob");
Person bob1 = bobs.get(0);
Person bob2 = bobs.get(1);
Copier après la connexion

Utilisation de Wrapper Classe :

// Define the wrapper class
class Wrapper {
    private Person person1;
    private Person person2;

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

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

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

// Populate the HashMap
peopleByForename.put("Bob", new Wrapper(new Person("Bob Smith"), new Person("Bob Jones")));

// Retrieve values
Wrapper bobs = peopleByForename.get("Bob");
Person bob1 = bobs.getPerson1();
Person bob2 = bobs.getPerson2();
Copier après la connexion

Utilisation de la classe Tuple :

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

// Populate the HashMap
peopleByForename.put("Bob", new Tuple2<>(new Person("Bob Smith"), new Person("Bob Jones")));

// Retrieve values
Tuple2<Person, Person> bobs = peopleByForename.get("Bob");
Person bob1 = bobs.Item1;
Person bob2 = bobs.Item2;
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal