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