7
votes

Attester les données sur la carte en Java

J'ai une carte xxx

maintenant à cela, j'ajoute quelques données à l'aide de PuTall comme xxx

où somedata retourne Carte >

maintenant, j'ai une autre ligne qui dit xxx

qui retourne également Carte > , mais en faisant cela, il écrit le contenu de l'entité existant, comment puis-je ajouter?


0 commentaires

6 Réponses :


8
votes

première ligne de la carte de la carte de la carte Java:

Un objet qui mesure les clés des valeurs. UNE La carte ne peut pas contenir des touches en double; Chaque touche peut mapper au plus une valeur.


3 commentaires

vrai, je suis d'accord, les valeurs essentielles sont différentes ici


Hmmm, ce n'est pas censé arriver! PuTall () est identique à l'appelant () pour tous les articles de la collection source.


Cela ne répond pas vraiment à votre question cependant, vous avez posé une question sur Ajout et vous avez eu un tas de réponses légitimes.



6
votes

Vous voulez un multimap A> de Google Guava . Réécrivez votre exemple avec GUAVA MULTIMAP:

ListMultimap<Integer, Object> entireData = ArrayListMultimap.create();


0 commentaires

5
votes
for (Integer key : someMoreData.keySet())
{
    if (entireData.containsKey(key))
    {
        entireData.get(key).addAll(someMoreData.get(key));
    }
    else
    {
        entireData.put(key, someMoreData.get(key));
    }
}

0 commentaires

2
votes

Les clés sont uniques. Si SOMEMORATA a une clé identique que la clé existante dans EntreData La valeur IE Liste d'objet sera écrasée.

Cependant, vous pouvez faire boucle dans SOMEMORATA et ajoute pour les clés qui existe dans Entitéeata comme xxx


0 commentaires

2
votes

par défaut, java mappe mapper une clé d'une valeur, comme Trojanfoe écrit . Si cela ne suffit pas à vos besoins, vous avez besoin d'une implémentation multi-cartes (une carte qui déconnecte une clé d'une collection de valeurs).

Les versions les plus populaires figurent dans deux frameworks open source, Google Guava et Apache Commons / Collections . P>

GUAVA Exemple: strong> p>

final MultiMap mmap = new MultiHashMap();
mmap.put(1, "foo");
mmap.put(1, "bar");
System.out.println(mmap.get(1));


2 commentaires

Vous pouvez instancier une goyave multimap beaucoup plus simplement en utilisant l'un des multimaps.new [(((lié? Hachage) | arborescence] multimap.create () (OK, peut-être que "regex" n'est pas parfait ;-)


... à tout prix, +1 pour démontrer comment obtenir les génériques à droite avec NewsetMultimap (mapss.newhashmap (), ...) ce qui est ce que i nécessaire.



0
votes

Semblable à Willcodejavaforfood Sucandespole n'est pas de dépendances nécessaires à une réponse, mais à l'aide d'une entrée à la place pour des extraites de hashmap moins.

public static <K,V> void appendMapBtoMapA(HashMap<K,List<V>> a, HashMap<K,List<V>> b) {
    for (Map.Entry<K, List<V>> bEntry : b.entrySet()) {
        a.computeIfAbsent(
            bEntry.getKey(), 
            k -> new LinkedList<>()
        ).addAll(bEntry.getValue());
    }
}


0 commentaires