我有一个数组大小的散列图总是不变的,所以它们都是一样的。如何将其转换为二维数组?
例如
key1 -> [1,2,3]
key2 -> [2,3,3]
key3 -> [4,3,6]
key4 -> [5,6,2]
我希望2d数组像
[1,2,3]
[2,3,3]
[4,3,6]
[5,6,2]
答案 0 :(得分:3)
您可以使用:
map.values().toArray(new int[map.size()][]);
或者,如果您使用的是Java 8,则可以使用:
map.values().stream().toArray(int[][]::new);
这是一个示例程序。
Map<String, int[]> map = new HashMap<>();
map.put("First", new int[] {1, 2, 3});
map.put("Second", new int[] {4, 5, 6});
map.put("Third", new int[] {7, 8, 9});
int[][] array = map.values().toArray(new int[map.size()][]);
System.out.println(Arrays.deepToString(array));
此程序打印
[[4, 5, 6], [7, 8, 9], [1, 2, 3]]
请注意,它已更改订单。如果您希望行的顺序与将数组放入地图的顺序相同,则可以使用LinkedHashMap
代替。
答案 1 :(得分:0)
这是怎么回事?
public int[] to2dArray(Map<String, int[]> map)
{
int[][] out = new int[map.size()][];
int index = 0;
for (int[] i : map.values())
{
out[index] = i;
index++;
}
return out;
作为一般提示,您可能想重新考虑使用哪种Map
。您使用的是HashMap
,这是无序的,因此2D阵列所在的顺序可能会有所不同。