具有多种数据类型的Java数组

具有多种数据类型的Java数组,java,Java,我可以使用什么来存储多种不同类型的数据,Int/String/等。?我来自PHP背景,可以将不同类型的数据存储到一个数组中,但我不知道如何在Java中实现这一点 举个例子: $array=array( “val1”=>1, “val2”=>“cat”, “val3”=>true ); 如何在Java中创建类似的东西?Java是一种强类型语言。在PHP或Javascript中,变量没有严格的类型。然而,在Java中,每个对象和primative都有一个严格的类型。可以在数组中存储多种类型的数据,

我可以使用什么来存储多种不同类型的数据,Int/String/等。?我来自PHP背景,可以将不同类型的数据存储到一个数组中,但我不知道如何在Java中实现这一点

举个例子:

$array=array(
“val1”=>1,
“val2”=>“cat”,
“val3”=>true
);

如何在Java中创建类似的东西?

Java是一种强类型语言。在PHP或Javascript中,变量没有严格的类型。然而,在Java中,每个对象和primative都有一个严格的类型。可以在数组中存储多种类型的数据,但只能将其作为对象返回

您可以拥有一个对象数组:

Object[] objects = new Object[3];
objects[0] = "foo";
objects[1] = 5;
请注意,5自动装箱到
新整数(5)
中,该整数是围绕整数5的对象包装器

但是,如果要从数组中获取数据,则只能将其作为对象获取。以下操作不起作用:

int i1 = objects[1]; // Won't work.
Integer i2 = objects[2]; // Also won't work.
您必须将其作为对象取回:

Object o = objects[0]; // Will work.
但是,现在您无法恢复原始表单。你可以试试危险的石膏:

String s = (String) o;
但是,您不知道
o
是一个字符串

您可以使用
instanceof
进行检查:

String s = null;

if (o instanceof String)
    s = (String) o;

您可以使用对象数组,但在检索存储的对象时会产生问题。相反,我将使用有效Java中描述的(并在本句前面链接到)

公共类DateStuff{
私有映射,对象>();
公共void putDate(类类型,T实例){
if(type==null)
抛出新的NullPointerException(“类型null”);
dateMap.put(类型、实例);
} 
公共getDate(类类型){
返回type.cast(dateMap.get(type));
}
}
typesafe异构容器通过按对象的类映射对象,解决了以后检索对象的问题。在您的情况下,我会将其与其他数据结构相结合,例如
列表
列表
、或
列表
,作为基类,以提供在一个集合中存储多种不同类型对象的方法。然后要检索值,只需获取子集合,例如
列表
,知道其中包含的所有项都属于同一类

这篇文章的意思是简单一点

您可以使用内置的
对象
类来创建支持字符串、整数等的数组

例如:

Object[] x = {"Item 1", 2, null, true};

看一看。难道你不需要用HashMap定义你的值吗?
Object[]
是你的朋友和Enemy这怎么会是重复的?我不同意。这是一个与标记为重复的问题不同的问题。已关闭,因此我无法回答,但我会使用有效Java中描述的(并在本句前面链接到的)问题。typesafe异构容器通过允许您找出存储在地图中每个位置的对象的类别,解决了以后检索对象的问题。谢谢,我将尝试一下。这当然会起作用,但您必须从数组中获得每个项的
实例,需要一个与数组中存储的对象类型数相同的条件。是的,但以后如何从中获取值?
Object[] x = {"Item 1", 2, null, true};