web-dev-qa-db-fra.com

Comment convertir des clés de carte de hachage en liste?

J'ai une carte de hachage et j'essaie de convertir les clés en liste. Voici le code:

List<ARecord> recs = new ArrayList<ARecord>();

HashMap<String, ARecord> uniqueRecs = new HashMap<String, ARecord>();
for(ARecord records:recs){
    if(!uniqueRecs.containsKey(records.getId())){
        uniqueRecs.put(records.getId(), records);
    }
}

Quand j'essaye de faire

List<ARecord> finalRecs = new ArrayList<ARecord>(uniqueRecs.keySet());

L'erreur:

Le constructeur ArrayList (Set) n'est pas défini ".

Comment puis-je convertir des clés Hashmap en List<ARecord> finalRecs?

15
Jay

Votre uniqueRecs a le type String de la clé. Tu dois faire:

List<String> keys = new ArrayList<>(uniqueRecs.keySet());

ou

List<ARecord> values = new ArrayList<>(uniqueRecs.values());
52
ka4eli

Ce qui a fonctionné pour moi que je voulais modifier une liste existante était:

list.addAll(map.keySet());
6
Martin De Simone

Les éléments suivants fonctionnent sous Java 1.7 et 1.8:

List<ARecord> finalRecs = new ArrayList<ARecord>();
for (final String key : uniqueRecs.keySet()) {
  finalRec.add(new ARecord() {
    public String gettld() {
       return key;
    }
  });
}
0
schtever