簡體   English   中英

如何將arraylist轉換為數組?

[英]How to convert arraylist to an array?

我在Java中有這個ArrayList -

List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();

要將它轉換為數組,我調用list.toArray()方法,但它返回Object[] 這不是我想要的。 我想要Map<String, Object>[]

我知道List.toArray(T[] a); 它不適用於參數化類型。

Spring框架中batchUpdate方法的方法簽名是這樣的 -

int[] org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate.batchUpdate(String sql, Map<String, ?>[] batchValues)

如果無法創建Map對象數組,為什么Spring會使用它? 那么我們應該如何使用這種方法呢?

簡而言之,您不能創建具體參數化類型的數組。 是對正在發生的事情的一個非常好的解釋。 Spring類型與Map batchValues基本相同。 參數類型僅供參考。 Java類型系統中的這個漏洞是性能的折衷。

試試這個,

 Map<String,Object>[] ar=list.toArray(new HashMap[list.size()]);

你可以嘗試這樣:

Map<String, Object> [] mp = list.toArray(new HashMap[list.size()]);

這樣做:

Map<String, Object> [] mp = new HashMap[list.size()]; 
list.toArray(mp); 

這個答案有效。 我測試了它。

我的完整測試代碼如下:

import java.util.*;
public class Test {

    public static void main (String [] args) {
        Map<String, Object> map = new HashMap<String, Object>();
        map.put("Hello", "World");
        ArrayList<Map<String, Object>> list = new ArrayList<Map <String, Object>>();
        list.add(map);

        Map<String, Object> [] mp = new HashMap[list.size()]; 
        list.toArray(mp);   
        System.out.println(mp[0]);    // prints out {Hello=World}
    }
}

HashMap [] map = list.toArray(new HashMap [0]);

你不能這樣做。

List.toArray(T [] a)是您唯一的選項,但它不適用於參數化類型,因為它們不會在運行時保留。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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