【问题标题】:Java: can I have arrays in Hashmaps?Java:我可以在 Hashmaps 中有数组吗?
【发布时间】:2011-07-27 01:53:56
【问题描述】:

我可以在 Hashmap 中包含数组吗?

如果是这样,声明这种 hashmap 的确切语法是什么?

谢谢

【问题讨论】:

  • 数组是你的键还是你的值?
  • @StriplingWarrior 价值观

标签: java


【解决方案1】:

我认为您应该使用 ArrayList 而不是原始数组。因为在 HashMap 类内部进行了 == 比较。

所以,你可以有这样的东西:

HashMap<String, ArrayList<String>> map = new HashMap<String, ArrayList<String>>();

当映射检查数组中是否存在某个元素(给定其键“k”)时,它会计算其哈希码。如果在那个位置“k”有一些元素,那么可能会产生一个colision,所以它会检查元素是否相同。原始数组可能会遇到一些问题。

【讨论】:

    【解决方案2】:

    价值?没关系,数组就是对象。

    钥匙?没那么容易 - 看这里:

    Using a byte array as Map key

    【讨论】:

      【解决方案3】:

      HashMap&lt;String, String[]&gt; ab = new HashMap&lt;String, String[]&gt;();

      【讨论】:

        【解决方案4】:

        是的。下面是一个使用 int [] 作为值的示例。示例here

        Map<String, int[]> map = new TreeMap<String, int[]>();
        

        【讨论】:

        • 这个怎么样:HashMap[]> ?我得到一个错误。我有一个里面有列表的数组。
        【解决方案5】:

        数组也是对象。甚至像 int[] 这样的原始数组。

        Map<String,String[]> map = new HashMap<String,String[]>();
        

        【讨论】:

        • 呃,这个呢: HashMap[]> ?我得到一个错误。我有一个里面有列表的数组。
        • 我没有收到来自Map&lt;String, List&lt;String&gt;[]&gt; map = new LinkedHashMap&lt;String, List&lt;String&gt;[]&gt;();的错误
        • @user680406 我认为你需要澄清你想要做什么。您是否混淆了数组和 ArrayLists?在您的示例中(您说没有用),您正在创建一个 Map ,其中映射中的每个值都是一个字符串列表数组,即每个 String 键映射到一个数组,并且该数组的每个元素都是一个 List 并且每个元素该列表是一个字符串!那正确吗?我在想也许你走得太远了,你想要的是 HashMap> 或 HashMap - 对吗?
        • @user680406:我猜你实际上想要HashMap&lt;String, ArrayList&lt;String[]&gt;&gt;。拥有ArrayLists 的数组会很愚蠢。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-01-08
        • 2015-03-16
        • 1970-01-01
        • 2011-09-25
        • 2010-10-25
        相关资源
        最近更新 更多