Comment créer un dictionnaire en Java? [fermé]


Je suis curieux de savoir comment créer un dictionnaire en Java. Je sais que Python avait une configuration de dictionnaire similaire à dictionary = {"key": "something"}. Je sais qu'il existe d'autres façons de le faire en Java, telles que la création de deux listes synchronisées et l'utilisation de la même position dans chaque liste pour imiter un dictionnaire.

ArrayList<Object> keys = new ArrayList<Object>();
ArrayList<Object> values = new ArrayList<Object>();
public void add(Object key, Object value){
    keys.add(key);
    values.add(value);
}
// And a subsequent return function
public Object getValue(Object key) {
    return values.get(keys.indexOf(key));
}

Cependant, cela me crie une mauvaise programmation. Est-il une syntaxe plus simple de le faire avec une seule instruction? La plupart des questions déjà posées sur le sujet sont fermées et, par conséquent, de peu d'aide.

Author: BarnyardOwl, 2013-07-18

6 answers

Java utilise HashMaps au lieu de dictionnaires.

D'autres cartes incluent TreeMap. La différence est dans le backend (l'un utilise une table de hachage, l'autre utilise un arbre rouge-noir)

Exemple:

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
....

Map<String,String> mMap = new HashMap<String, String>();
mMap.put("key", "something");
Iterator iter = mMap.entrySet().iterator();
while (iter.hasNext()) {
    Map.Entry mEntry = (Map.Entry) iter.next();
    System.out.println(mEntry.getKey() + " : " + mEntry.getValue());
}
 9
Author: jh314, 2013-07-18 01:49:46

, en Général, vous pouvez utiliser HashMap comme ceci:

Map<String, String> map = new HashMap<String, String>();

Par exemple, vous pouvez maintenant utiliser cet objet map un peu comme vous le feriez avec un dictionnaire en Python.

map.put("Key", "Value");
System.out.println(map.get("Key"));

Il existe plusieurs autres classes qui implémentent l'interface Map qui sont utiles pour utiliser un dictionnaire en Java (certaines sont mieux à utiliser dans certaines situations que d'autres).

 3
Author: Derek W, 2013-07-18 01:52:29

Une alternative possible pour le dictionnaire en Java est HashMap. Vous pouvez consulter la Documentation d'Oracle pour d'autres références. http://docs.oracle.com/javase/7/docs/api/java/util/HashMap.html

 1
Author: Salman Khakwani, 2013-07-18 01:44:17

Vous pouvez vérifier

Http://docs.oracle.com/javase/6/docs/api/java/util/Map.html

Si vous êtes préoccupé par les performances, vous devriez essayer TreeMap. Je suppose que vous vous souciez plus du temps de récupération que de l'insertion.

 1
Author: Taps, 2013-07-18 01:49:47

Pour la création de carte concise (et beaucoup d'autres choses utiles), je recommande Goyave. En particulier, voir ImmutableMap.de et ImmutableMap.Constructeur .

Exemples:

Map<String, Integer> map = ImmutableMap.of(
    "one", 1,
    "two", 2,
    "three", 3
);

Map<String, Integer> map = new ImmutableMap.Builder<String, Integer>()
    .put("one", 1)
    .put("two", 2)
    .put("three", 3)
    .build();
 1
Author: Chris Martin, 2013-07-18 02:10:23

Un mot peut contenir plus d'un sens. vous pouvez donc utiliser MultiMap.

    MultiMap dictionary = new MultiValueMap();
    dictionary.put("key", "something");
    dictionary.put("key", "Important");
    System.out.println("dictionary Value : "+dictionary.get("key"));

Valeur du dictionnaire: [quelque chose, important]

 1
Author: newuser, 2013-07-18 02:10:54