Maison > Java > javaDidacticiel > Comment stocker plusieurs valeurs avec la même clé dans un HashMap ?

Comment stocker plusieurs valeurs avec la même clé dans un HashMap ?

Mary-Kate Olsen
Libérer: 2024-12-09 02:01:09
original
429 Les gens l'ont consulté

How to Store Multiple Values with the Same Key in a HashMap?

Création de HashMaps avec plusieurs valeurs par clé

Dans certains scénarios, il peut être nécessaire de stocker plusieurs valeurs avec la même clé dans un HashMap . Bien que HashMap de Java ne prenne pas en charge cela de manière native, il existe plusieurs approches alternatives pour obtenir cette fonctionnalité.

1. Carte avec liste comme valeur

Une option consiste à créer un HashMap où les valeurs sont des listes. Cela permet d'associer plusieurs valeurs à une seule clé. Par exemple :

Map<String, List<Person>> peopleByForename = new HashMap<>();
Copier après la connexion

2. Classe Wrapper

Une alternative consiste à définir une classe wrapper qui contient les multiples valeurs. Ce wrapper peut ensuite être utilisé 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;
    }

    // Getter methods
}

Map<String, Wrapper> peopleByForename = new HashMap<>();
Copier après la connexion

3. Tuples

Si votre langage de programmation prend en charge les tuples, vous pouvez les utiliser comme clés ou valeurs dans un HashMap. Par exemple :

Map<String, Tuple2<Person, Person>> peopleByForename = new HashMap<>();
Copier après la connexion

4. Cartes multiples

Enfin, une autre stratégie consiste à utiliser des cartes distinctes pour chaque type de valeur :

Map<String, Person> firstPersonByForename = new HashMap<>();
Map<String, Person> secondPersonByForename = new HashMap<>();
Copier après la connexion

Exemples

Considérant l'exemple scénario d'un HashMap avec un userId, un clientID et timeStamp :

Option 1 : Carte avec liste comme valeur

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())));
Copier après la connexion

Option 2 : Classe Wrapper

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()));
Copier après la connexion

Le choix de l'approche dépend des exigences spécifiques de votre application et du langage de programmation utilisé.

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal