具有多维数组的HashMap或Map的Java用法

时间:2013-07-18 20:57:34

标签: java hashmap treemap sortedmap

我想使用HashMaps<String, V>,其中值类型V应该是二维int数组(int[][])。

Map<String,int[][]> map = new HashMap<>();
int[][] a = new int[][]{ {1, 2} };
map.put("test", a);
System.out.println("Test:" + map.containsKey("test"));  // Test: true
System.out.println("key ==== " + map.get("test"));      // Key === [[I@19a8942

我正在尝试使用一个访问唯一值的键,即一个二维数组,数组的大小是固定的array[1][3],这是常量。密钥数量会随着时间而增长,但不会增加数组。例如:

Key1 -> [no1, no2, no3]
key2 -> [no4, no5, no6]
  1. 我想访问数组值,现在我收到错误。
  2. 有更好的实现方法吗?理想情况下,我希望按键排序。
  3. 我不是Java方面的专家,但在阅读了一些关于地图的内容之后,我觉得这对我来说效果最好。

2 个答案:

答案 0 :(得分:1)

  

我想访问数组值,现在我收到错误。

不确定你的意思,但你似乎走在了正确的轨道上。

System.out.println(map.get("test")[0][1]);
2

  

理想情况下,我希望按键排序。

您可以使用TreeMap,它按照其键的自然顺序排序。

答案 1 :(得分:1)

运行时,您的代码不会产生任何错误。但是,您可能会错误地将java处理数组的字符串表示的方式误解为错误。

当你致电System.out.println("key ==== " + map.get("test"));时,它确实正确地打印了数组。但是,默认情况下,java奇怪地表达数组,尤其是数组(或2d数组)。您可能希望将其更改为:

//at top of file
import java.util.Arrays;

//deepToString returns a string that expresses nested arrays in a user-friendly format
System.out.println("key ==== " + Arrays.deepToString(map.get("test")));

哪个正确打印

Test:true
key ==== [[1, 2]]