[英]Access to key/values pairs of HashMaps within an Object[]
我有一個Object [],其中包含許多HashMap類型的Object。 HashMap看起來像這樣:
Object[]
{id=15, name=Hello}
{id=27, name=Hello}
{id=15, name=Hello}
我試圖將其強制轉換為HashMap [],但是沒有運氣。
我想迭代並檢索名稱列表。 希望您能夠幫助我。
您不能將持有T1的數組轉換為持有T2的數組。 實際對象中具有自身類型的數組。 這是您無法投放的原因。
但是我懷疑您是否真的有一個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);
}
}
這將在數組的所有散列上打印所有值。
即使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);
}
}
}
我不確定我是否理解您的問題,因為它在語法上是錯誤的。 但,
您可以使用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() },
} );
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.