如何将哈希映射键转换为列表?

时间:2015-08-04 21:54:27

标签: java arraylist hashmap

我有一个哈希映射,我正在尝试将密钥转换为列表。这是代码:

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);
    }
}

当我尝试

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

错误:

  

构造函数ArrayList(Set)未定义“。

如何将Hashmap密钥转换为List<ARecord> finalRecs?

4 个答案:

答案 0 :(得分:47)

您的uniqueRecs具有String类型的密钥。你必须这样做:

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

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

答案 1 :(得分:5)

我想要修改现有列表对我有用的是:

list.addAll(map.keySet());

答案 2 :(得分:0)

以下在Java 1.7和1.8下工作:

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

答案 3 :(得分:0)

我认为“如今”的最佳方法是:

List<Integer> result = map.keySet().stream().collect(Collectors.toList());

这将发出任何警告,并将正确地获得List<Integer>通用名称。