Java 如何从哈希映射中读出数组?

Java 如何从哈希映射中读出数组?,java,arrays,hashmap,Java,Arrays,Hashmap,我在理解如何读出放入哈希映射的数组时遇到了一个问题。 (顺便说一句,我需要将不同的数据类型放入哈希映射、单个值和数组中,我使用的是通用的“Object”类型) 示例代码: 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 "+myAr

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

示例代码:

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]);
我在运行时出错

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

非常感谢。
Steffen

问题在此范围内:

int[] myArray = new int[2]:
int[] myArray = new int[2]:
换成

int[] myArray = new int[2];

除此之外,代码段没有问题。

问题在这一行内:

int[] myArray = new int[2]:
int[] myArray = new int[2]:
换成

int[] myArray = new int[2];

除此之外,代码段没有问题。

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

int[] myArray = new int[2]:
int[] myArray = new int[2]:
它使用冒号而不是分号,并毫无意义地创建一个新数组。假设你说你在运行时遇到了一个错误,我怀疑这不是问题所在——但是很难说,因为你没有说错误到底是什么

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

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]);
  }
}

鉴于该代码可以正常工作,请发布一个简短但完整的失败程序,或者至少告诉我们您实际遇到的错误。

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

int[] myArray = new int[2]:
int[] myArray = new int[2]:
它使用冒号而不是分号,并毫无意义地创建一个新数组。假设你说你在运行时遇到了一个错误,我怀疑这不是问题所在——但是很难说,因为你没有说错误到底是什么

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

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]);
  }
}

考虑到代码是有效的,请发布一个简短但完整的失败程序,或者至少告诉我们您实际遇到了什么错误。

@org.life.java:是的。。。我怀疑发布的代码并不是失败的代码。亲爱的,你是对的。代码正在运行。不幸的是,我很快发布了我的问题。这个bug在其他地方,我需要调查。谢谢,再次抱歉。Steffen@org.life.java:是的。。。我怀疑发布的代码并不是失败的代码。亲爱的,你是对的。代码正在运行。不幸的是,我很快发布了我的问题。这个bug在其他地方,我需要调查。谢谢,再次抱歉。SteffenAs您可能希望使用ArrayList而不是[]。然后可以使用泛型等;这是不必要的。您正在使用myArray=(int[])map.get(“two”);重新分配myArray变量;。另外,您可能希望使用ArrayList而不是[]。然后可以使用泛型等;这是不必要的。您正在使用myArray=(int[])map.get(“two”);重新分配myArray变量;。