簡體   English   中英

訪問對象內HashMap的鍵/值對[]

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM