如何将哈希映射键转换为列表?
Posted
技术标签:
【中文标题】如何将哈希映射键转换为列表?【英文标题】:How to convert hash map keys into list? 【发布时间】:2015-10-27 11:50:58 【问题描述】:我有一个哈希映射,我正在尝试将键转换为列表。代码如下:
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?
【问题讨论】:
【参考方案1】:您的uniqueRecs
具有String
类型的密钥。你必须这样做:
List<String> keys = new ArrayList<>(uniqueRecs.keySet());
或
List<ARecord> values = new ArrayList<>(uniqueRecs.values());
【讨论】:
有没有办法将 ListString
s。 “如何将哈希映射的键作为 List 传递”没有意义,因为 键不是 ARecord
s。 那是 值。跨度>
@Jay,如果uniqueRecs
中的记录确实是唯一的,顾名思义,意味着地图中所有ARecord
s都有唯一的id,那么你可以简单地使用new ArrayList<>(uniqueRecs.values())
as ka4eli在这里建议。【参考方案2】:
我想修改现有列表对我有用的是:
list.addAll(map.keySet());
【讨论】:
【参考方案3】:我认为“现在”最好的方法是:
List<Integer> result = map.keySet().stream().collect(Collectors.toList());
这将不会抛出任何警告,并将正确获取List<Integer>
泛型。
【讨论】:
【参考方案4】:以下在 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;
);
【讨论】:
我收到错误“List 类型中的方法 addAll(Collection extends ARecord>) 不适用于参数 (Set以上是关于如何将哈希映射键转换为列表?的主要内容,如果未能解决你的问题,请参考以下文章