ArrayList et Hashtable

Fermé
fafa - 22 juin 2014 à 17:22
 fafa - 22 juin 2014 à 19:59
Bonjour,

Je veux votre aide pour le passage d'une ArrayList et à Hashtable?
Je pense que c'est comme ça : ArrayList<humain> ar=new ArrayList<humain>(hashtable.values()); mais je suis pas sûr :/

et comment on peut faire l'opération inverse?

Merci pour votre aide.
A voir également:

1 réponse

KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
22 juin 2014 à 17:31
Bonjour,

Déjà il ne faut plus utiliser Hashtable, il y a la classe ConcurrentHashMap à la place, même si dans la plupart des cas une HashMap suffira.

Ensuite, cela dépend ce que tu veux faire, une map est composé de clés/valeurs, alors qu'une liste n'est composé que de valeurs.

Donc si tu passes d'une liste à une map, qu'est-ce que tu vas prendre comme clé ?
Dans l'autre sens, qu'est-ce que tu fais des clés quand tu passes d'une map à une liste ?

Remarque : une liste a un ordre, alors que les Map n'en ont pas (il y a éventuellement un ordre sur les clés, mais pas sur les valeurs)
0
Re :

Je te remercie pour la réponse.En fait, c'est une question d'un examen dont je savais pas comment le prof conçoit les choses, je vx juste une réponse de façon générale.Si on passe de Hashtable à ArrayList, comment on gère les clès et comment on procède dans le cas inverse? ^^
0
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
22 juin 2014 à 19:31
Dans le cas général, on ne passe pas de Map à List, et encore moins l'inverse, à cause des clés. Pour ne rien perdre, il faudrait utiliser les Entry, ce sont des couples (Clé,Valeur).qui permettent de conserver le lien entre les deux.

Dans l'interface Map tu as donc une méthode entrySet() qui permet de récupérer l'ensemble de ces clés/valeurs, mais c'est un Set (sans ordre), pas une List (avec ordre). Tu peux évidemment faire la conversion après en List si tu veux.

Map<X,Y> map = ...
Set<Entry<X,Y>> set = map.entrySet();
List<Entry<X,Y>> list = new ArrayList<Entry<X,Y>>(set);

Après dans l'autre sens, en supposant que tu ais bien une List<Entry<X,Y>> tu peux reconstruire une Map<X,Y> il suffit de faire des put successifs.

List<Entry<X,Y>> list = ...
Map<X,Y> map = new HashMap<X,Y>(list.size());
for (Entry<X,Y> entry : list)
    map.put(entry.getKey(), entry.getValue());
0
Je te remercie infiniment pour ton aide, c très utile :D.Donc, pour le premier passage pour la liste je fais la mm chose sans le set, c ça?
0