将哈希映射转换为二维数组

将HashMap转换为2D数组的最简单方法是什么?

HashMap map = new HashMap(); Object[][] arr = new Object[map.size()][2]; Set entries = map.entrySet(); Iterator entriesIterator = entries.iterator(); int i = 0; while(entriesIterator.hasNext()){ Map.Entry mapping = (Map.Entry) entriesIterator.next(); arr[i][0] = mapping.getKey(); arr[i][1] = mapping.getValue(); i++; } 

只有当键和值的类型相同时,才能执行此操作。

鉴于:

 HashMap map; 

我可以使用这个简单的循环从这个地图创建一个数组:

 String[][] array = new String[map.size()][2]; int count = 0; for(Map.Entry entry : map.entrySet()){ array[count][0] = entry.getKey(); array[count][1] = entry.getValue(); count++; } 

怎么样

 Object[][] array = new Object[][]{map.keySet.toArray(), map.entrySet.toArray()}; 

或者,为了更具体地说明类型,让我们说它们是StringsSettoArray需要一个提示参数,所以

 String[][] array = new String[][]{map.keySet.toArray(new String[0]), map.entrySet.toArray(new String[0])}; 

编辑:我刚刚意识到,虽然这可能是偶然的,但总的来说它不应该。 原因是中间Set ; 虽然它是“由地图支持”,但似乎没有明确保证它将以任何特定顺序迭代。 因此,密钥和入口arrays可能不是相同的顺序,这肯定是一场灾难!

使用entrySet迭代Map,并使用Entry对象填充数组记录