[英]How to do an array of hashmaps?
這是我試圖做的,但它給了我一個警告:
HashMap<String, String>[] responseArray = new HashMap[games.size()];
類型安全:HashMap[] 類型的表達式需要未經檢查的轉換以符合 HashMap[]
你可以使用這樣的東西:
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class testHashes {
public static void main(String args[]){
Map<String,String> myMap1 = new HashMap<String, String>();
List<Map<String , String>> myMap = new ArrayList<Map<String,String>>();
myMap1.put("URL", "Val0");
myMap1.put("CRC", "Vla1");
myMap1.put("SIZE", "Val2");
myMap1.put("PROGRESS", "Val3");
myMap.add(0,myMap1);
myMap.add(1,myMap1);
for (Map<String, String> map : myMap) {
System.out.println(map.get("URL"));
System.out.println(map.get("CRC"));
System.out.println(map.get("SIZE"));
System.out.println(map.get("PROGRESS"));
}
//System.out.println(myMap);
}
}
Java 語言規范第 15.10 節指出:
數組創建表達式創建一個對象,該對象是一個新數組,其元素屬於 PrimitiveType 或 ClassOrInterfaceType 指定的類型。 如果 ClassOrInterfaceType 不表示可具體化的類型(第 4.7 節),則會出現編譯時錯誤。
和
上述規則意味着數組創建表達式中的元素類型不能是參數化類型,除非是無界通配符。
您可以做的最接近的是使用未經檢查的強制轉換,無論是從原始類型(如您所做的那樣)還是從無界通配符:
HashMap<String, String>[] responseArray = (Map<String, String>[]) new HashMap<?,?>[games.size()];
你的版本顯然更好:-)
Java 不希望您創建一個 HashMap 數組,但它可以讓您創建一個對象數組。 因此,只需編寫一個類聲明作為 HashMap 的外殼,並創建該類的數組。 如果您願意,這可以讓您存儲一些關於 HashMap 的額外數據——這可能是一個好處,因為您已經有了一個有點復雜的數據結構。
這看起來像什么:
private static someClass[] arr = new someClass[someNum];
和
public class someClass {
private static int dataFoo;
private static int dataBar;
private static HashMap<String, String> yourArray;
...
}
您不能擁有泛型類型的數組。 改用List
。
關於@alchemist 的回答,我僅使用 HashMap 和 ArrayList 添加了一些修改:
import java.util.ArrayList;
import java.util.HashMap;
public class ArrayOfHash {
public static void main(String[] args) {
HashMap<String,String> myMap = new HashMap<String, String>();
ArrayList<HashMap<String , String>> myArrayMap = new ArrayList<HashMap<String,String>>();
myMap.put("Key1", "Val0");
myMap.put("Key2", "Val1");
myMap.put("Key3", "Val2");
myMap.put("Key4", "Val3");
myArrayMap.add(myMap);
myArrayMap.add(myMap);
for (int i = 0; i < myArrayMap.size(); i++) {
System.out.println(myArrayMap.get(i).get("Key1") + ","
+ "" + myArrayMap.get(i).get("Key2") + ","
+ "" + myArrayMap.get(i).get("Key3") + ","
+ "" + myArrayMap.get(i).get("Key4"));
System.out.println(); // used as new blank line
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.