如何将哈希图转换为条目数组[重复]
Posted
技术标签:
【中文标题】如何将哈希图转换为条目数组[重复]【英文标题】:How to convert hashmap to Array of entries [duplicate] 【发布时间】:2013-05-14 01:52:14 【问题描述】:我有一张地图
private HashMap<Character, Integer> map;
我想将它转换为数组,但是当我这样做时/我得到了这个:
Entry<Character, Integer> t = map.entrySet().toArray();
**Type mismatch: cannot convert from Object[] to Map.Entry<Character,Integer>**
Entry<Character, Integer>[] t = null;
map.entrySet().toArray(t);
**Exception in thread "main" java.lang.NullPointerException**
Entry<Character, Integer>[] t = new Entry<Character, Integer>[1];
map.entrySet().toArray(t);
**Cannot create a generic array of Map.Entry<Character,Integer>**
Entry<Character, Integer>[] t = null;
t = map.entrySet().toArray(t);
**Exception in thread "main" java.lang.NullPointerException**
那么如何将HashMap
转换为Array
? 在其他科目中找到的答案均无效。
【问题讨论】:
***.com/questions/529085/… 问题是不可能创建像Entry<Character, Integer>[]
这样的通用数组。请改用List<Entry<Character, Integer>>
。
【参考方案1】:
我认为这会奏效:
Entry<Character, Integer>[] t = (Entry<Character, Integer>[])
(map.entrySet().toArray(new Map.Entry[map.size()]));
...但是您需要一个 @SuppressWarning 注释来抑制有关不安全类型转换的警告。
【讨论】:
是的,它做到了.. 太棒了!真正的魔法。【参考方案2】:我不确定您尝试的方式。我会做的是
当你这样做时你会得到一个EntrySet,所以数据将被存储为Entry
因此,如果您想将其保留在 EntrySet 中,您可以这样做:
List<Entry<Character, Integer>> list = new ArrayList<Entry<Character, Integer>>();
for(Entry<Character, Integer> entry : map.entrySet())
list.add(entry);
另外请注意,执行此操作时您将始终得到不同的顺序,因为 HashMap 没有排序。
或者你可以做一个类来保存条目数据:
public class Data
public Character character;
public Integer value;
public Data(Character char, Integer value)
this.character = character;
this.value = value;
并使用以下方法提取它:
List<Data> list = new ArrayList<Data>();
for(Entry<Character, Integer> entry : map.entrySet())
list.add(new Data(entry.getKey(), entry.getValue()));
【讨论】:
以上是关于如何将哈希图转换为条目数组[重复]的主要内容,如果未能解决你的问题,请参考以下文章