web-dev-qa-db-fra.com

collection Java qui a une paire clé/valeur et ordre

Je veux quelque chose où je peux insérer des paires clé/valeur, et l'ordre est celui dans lequel j'insère les éléments.

J'ai lu des articles sur les cartes, mais il me semble que je dois écrire mon propre comparateur pour eux.

Je veux que le premier élément que j'insère soit le premier stocké, et le deuxième soit le deuxième élément de la collection, etc.

17
Blankman

Essayez d’utiliser une LinkedHashMap, à partir de javadocs :

Implémentation de la table avec table de hachage et liste chaînée, avec ordre d'itération prévisible Cette implémentation diffère de HashMap en ce qu'elle gère une liste doublement chaînée parcourant toutes ses entrées. Cette liste liée définit l'ordre des itérations, qui correspond normalement à l'ordre dans lequel les clés ont été insérées dans la carte (ordre d'insertion).

20
Óscar López

Pourquoi ne pas simplement créer une class pour contenir une clé et une valeur, puis les stocker dans votre implémentation List préférée?

class Pair {
    Key k;
    Value v;
}

List<Pair> stuff = new ArrayList<Pair>();

Pair p = new Pair();
...
stuff.add(p);
7

On dirait que vous devez utiliser une liste avec un objet nom/valeur 

List<NameValuePair> values = new Arraylist<NameValuePair>();

puis utilisez la liste comme une liste normale

class NameValuePair {
   private name;
   private value;

  ... get/set
}
1
vcetinick

LinkedHashMap est le type de structure de données que vous recherchez! As étend le HashMap (qui vous permet d’avoir un élément dans la paire clé/valeur) et maintient une liste de liens (qui vous donne l’ordre d’insertion) des entrées.

Consultez également les types de cartes suivants pour plus d'informations:

https://docs.Oracle.com/javase/8/docs/api/

Allez sur AbstractMap et vérifiez-les

HashMap & TreeMap

HashTable - http://docs.Oracle.com/javase/7/docs/api/Java/util/Hashtable.html

0
inityk