我有一个Object [],它包含许多HashMap类型的对象。 HashMap看起来像这样:
Object[]
{id=15, name=Hello}
{id=27, name=Hello}
{id=15, name=Hello}
我曾尝试将其转换为HashMap [],但没有运气。
我想迭代并检索一个名单。希望你能帮帮我。
答案 0 :(得分:3)
你不能将持有T1的数组转换为持有T2的数组。具有自身类型的实际对象中的数组。这是你失败的原因。
但是我怀疑你真的有一个HashMap数组。您提供的转储看起来不像是一个hashmap转储。
但是要回答你原来的问题,你应该这样做:
// assuming hashes is your array
Object []hashes;
for (Object object : hashes) {
HashMap hash = (HashMap)object;
for (Object o : hash.values()) {
System.out.println(o);
}
}
这将打印阵列中所有哈希值的所有值。
答案 1 :(得分:3)
即使一个Objects数组只包含HashMap实例,它仍然是一个Objects数组,不能转换为HashMaps数组。
然而,您可以迭代数组,并将每个元素转换为HashMap(或Map)。如果您不确定数组中的每个对象都是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);
}
}
}
答案 2 :(得分:1)
我不确定我是否理解你的问题,因为它在语法上是错误的。但是,
您可以使用ArrayUtils.toMap()
:
Map map = ArrayUtils.toMap( new String[][]{
{"@GRP@", artifactInfo.getGroup() },
{"@ART@", artifactInfo.getName() },
{"@VER@", artifactInfo.getVersion() },
{"@PACK@", artifactInfo.getPackaging() },
{"@NAME@", artifactInfo.getFileName() },
{"@DESC@", req.getQueryString() },
} );