【问题标题】:How to readout Array from hash map?如何从哈希图中读出数组?
【发布时间】:2010-12-13 11:57:53
【问题描述】:

我在理解如何读取放入哈希映射的数组时遇到问题。 (顺便说一下,我需要将不同的数据类型放入哈希映射、单个值和数组中,这样我就使用了通用的“对象”类型)。

示例代码:

HashMap map = new HashMap();

map.put("two", new int[]{1,2});

int[] myArray = new int[2]:

myArray = (int[])map.get("two");

System.out.println("Array value "+myArray[0]);

System.out.println("Array value "+myArray[1]);

我在运行时遇到错误...

我希望有人能给我一个提示。我找不到我的错误。

非常感谢。 史蒂芬

【问题讨论】:

  • 顺便说一句,您可能希望使用 ArrayList 而不是 []。然后你可以使用泛型等。
  • 行 int[] myArray = new int[2];是不必要的。您正在使用 myArray = (int[])map.get("two"); 重新分配 myArray 变量。

标签: java arrays hashmap


【解决方案1】:

问题出在这一行:

int[] myArray = new int[2]:

改成

int[] myArray = new int[2];

除此之外,sn-p 没有问题。

【讨论】:

    【解决方案2】:

    该代码应该可以正常工作,但以下行除外:

    int[] myArray = new int[2]:
    

    它使用冒号而不是分号,并且毫无意义地创建了一个新数组。鉴于您说您在 runtime 遇到错误,我怀疑这不是问题 - 但很难说,因为您还没有说出错误实际上是什么。

    我还建议使用泛型而不是原始类型,即使值类型只是 Object。这是一个简短但完整的程序,展示了它的工作原理:

    import java.util.*;
    
    public class Test {
      public static void main(String[] args) {
        Map<String, Object> map = new HashMap<String, Object>();
        map.put("two", new int[] { 1, 2 });
        int[] myArray = (int[]) map.get("two");
        System.out.println("Array value " + myArray[0]);
        System.out.println("Array value " + myArray[1]);
      }
    }
    

    输出:

    Array value 1
    Array value 2
    

    鉴于该代码有效,请发布一个简短但完整的失败程序 - 或至少告诉我们您实际遇到的错误。

    【讨论】:

    • @org.life.java:是的......我怀疑发布的代码不完全是失败的代码。
    • 亲爱的,你是对的。代码正在运行。不幸的是,我要快速发布我的问题。该错误在其他地方,我需要进行调查。谢谢,再次抱歉。史蒂芬
    猜你喜欢
    • 2011-04-20
    • 2012-10-07
    • 1970-01-01
    • 2013-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多