Java 访问对象[]中哈希映射的键/值对

Java 访问对象[]中哈希映射的键/值对,java,Java,我有一个Object[],它包含许多HashMap类型的对象。HashMap如下所示: Object[] {id=15, name=Hello} {id=27, name=Hello} {id=15, name=Hello} // assuming hashes is your array Object []hashes; for (Object object : hashes) { HashMap hash = (HashMap)object;

我有一个Object[],它包含许多HashMap类型的对象。HashMap如下所示:

Object[]
{id=15, name=Hello}
{id=27, name=Hello}
{id=15, name=Hello}
    // assuming hashes is your array
    Object []hashes;

    for (Object object : hashes) {
        HashMap hash = (HashMap)object;

        for (Object o : hash.values()) {
            System.out.println(o);
        }
    }
我尝试将其转换为HashMap[],但没有成功


我想迭代并检索一个名称列表。希望你能帮助我。

你不能将一个数组中的T1转换成一个数组中的T2。实际对象中具有自身类型的数组。这就是你无法施展的原因

然而,我怀疑你是否真的有一个HashMap数组。您提供的转储看起来不像hashmap转储

然而,要回答您最初的问题,您应该这样做:

Object[]
{id=15, name=Hello}
{id=27, name=Hello}
{id=15, name=Hello}
    // assuming hashes is your array
    Object []hashes;

    for (Object object : hashes) {
        HashMap hash = (HashMap)object;

        for (Object o : hash.values()) {
            System.out.println(o);
        }
    }

这将打印数组中所有哈希上的所有值

不能将包含T1的数组强制转换为包含T2的数组。实际对象中具有自身类型的数组。这就是你无法施展的原因

然而,我怀疑你是否真的有一个HashMap数组。您提供的转储看起来不像hashmap转储

然而,要回答您最初的问题,您应该这样做:

Object[]
{id=15, name=Hello}
{id=27, name=Hello}
{id=15, name=Hello}
    // assuming hashes is your array
    Object []hashes;

    for (Object object : hashes) {
        HashMap hash = (HashMap)object;

        for (Object o : hash.values()) {
            System.out.println(o);
        }
    }

这将打印数组中所有哈希上的所有值

即使一个对象数组只包含HashMap实例,它仍然是一个对象数组,不能转换为HashMap数组

但是,您可以迭代数组,并将每个元素强制转换为HashMap(或Map)。如果不确定数组中的每个对象都是贴图实例,请使用instanceof操作符:

List<String> names = new ArrayList<String>(objects.size());
for (Object o : objects) {
    if (o instanceof Map) {
        Map map = (Map) o;
        String name = map.get("name");
        if (name != null) {
            names.add(name);
        }
    }
}
List name=new ArrayList(objects.size());
用于(对象o:对象){
if(o映射的实例){
Map=(Map)o;
String name=map.get(“name”);
if(name!=null){
名称。添加(名称);
}
}
}

即使一个对象数组只包含HashMap实例,它仍然是一个对象数组,不能转换为HashMap数组

但是,您可以迭代数组,并将每个元素强制转换为HashMap(或Map)。如果不确定数组中的每个对象都是贴图实例,请使用instanceof操作符:

List<String> names = new ArrayList<String>(objects.size());
for (Object o : objects) {
    if (o instanceof Map) {
        Map map = (Map) o;
        String name = map.get("name");
        if (name != null) {
            names.add(name);
        }
    }
}
List name=new ArrayList(objects.size());
用于(对象o:对象){
if(o映射的实例){
Map=(Map)o;
String name=map.get(“name”);
if(name!=null){
名称。添加(名称);
}
}
}

我不确定我是否理解你的问题,因为它在语法上是错误的。但是,

您可以使用
ArrayUtils.toMap()


我不确定我是否理解你的问题,因为它在语法上是错误的。但是,

您可以使用
ArrayUtils.toMap()


你能贴出那个物体的构造过程吗?这是无可救药的混乱。演示使用您遇到问题的实际代码,而不是一些甚至不进行远程编译的脱离上下文的“示例”。这有何混淆之处?;-)我正在访问一个XMLRPC接口,如果我给它一个要处理的单id参数,它将返回一个HashMap。现在,如果我给它一个ID为的对象[],它将返回一个带有HashMaps的对象[]。我不知道该软件的后端,它是用Python编写的。你能发布该对象的构造过程吗?这是无可救药的混乱。演示使用您遇到问题的实际代码,而不是一些甚至不进行远程编译的脱离上下文的“示例”。这有何混淆之处?;-)我正在访问一个XMLRPC接口,如果我给它一个要处理的单id参数,它将返回一个HashMap。现在,如果我给它一个ID为的对象[],它将返回一个带有HashMaps的对象[]。我不知道软件的后端,它是用Python编写的。嘿,我有一个java.util.HashMap在里面,我打印了数组中对象的getClass().getName()。嘿,我有一个java.util.HashMap在里面,我打印了数组中对象的getClass().getName()。