JAVA什么是将Hashmap <string,array =“”>转换为2d数组的最简单方法?

时间:2015-12-02 01:35:20

标签: java arrays hashmap

我有一个数组大小的散列图总是不变的,所以它们都是一样的。如何将其转换为二维数组?

例如

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]

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阵列所在的顺序可能会有所不同。