Maison >Java >javaDidacticiel >Comment implémenter un HashMap avec plusieurs valeurs par clé en Java ?

Comment implémenter un HashMap avec plusieurs valeurs par clé en Java ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-11 10:02:12955parcourir

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

Implémentation d'une carte avec plusieurs valeurs par clé

Dans certains scénarios, il peut être nécessaire de stocker plusieurs valeurs sous la même clé au sein d'un Carte de hachage. Bien que le HashMap standard de Java ne prenne pas en charge ce comportement de manière native, il existe plusieurs approches pour y parvenir :

1. Carte avec liste comme valeur :

Cette approche consiste à créer un HashMap où la valeur est une liste des valeurs souhaitées. Par exemple :

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

Bien que cette méthode offre une flexibilité concernant le nombre de valeurs stockées sous la clé, elle n'a pas la garantie d'avoir exactement deux valeurs.

2. Utilisation d'une classe Wrapper :

Une alternative consiste à définir une classe wrapper qui contient les valeurs souhaitées et à l'utiliser comme valeur dans le 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<>();

Cette méthode garantit que présence d'exactement deux valeurs, mais cela nécessite la création d'un code passe-partout supplémentaire pour la classe wrapper.

3. Utilisation d'un tuple :

Une classe tuple encapsule plusieurs valeurs dans un seul objet. En utilisant un tuple comme valeur dans HashMap, vous pouvez efficacement obtenir plusieurs valeurs par clé. Par exemple :

import java.util.Tuple;

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

4. Plusieurs cartes côte à côte :

Enfin, vous pouvez également utiliser plusieurs HashMaps pour différents types de clés. Par exemple, vous pouvez créer :

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

Bien que cette méthode permette une séparation claire des valeurs, elle introduit un risque d'incohérence si les deux cartes ne sont pas mises à jour de manière cohérente.

Le choix L’approche dépend des exigences spécifiques de l’application. Si l’application stricte de deux valeurs par clé est cruciale, l’utilisation d’une classe wrapper ou d’un tuple peut être plus appropriée. Alternativement, si une flexibilité dans le nombre de valeurs est souhaitée, utiliser une carte avec une liste comme valeur peut être plus appropriée.

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!

Déclaration:
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