这是我试图做的,但它给了我一个警告:
HashMap<String, String>[] responseArray = new HashMap[games.size()];
类型安全:HashMap []类型的表达式需要未经检查的转换以符合HashMap []
答案 0 :(得分:55)
是什么给出的?有用。请忽略它:
@SuppressWarnings("unchecked")
不,你cannot对它进行参数化。不过,我宁愿使用List<Map<K, V>>
。
List<Map<String, String>> listOfMaps = new ArrayList<Map<String, String>>();
要了解有关馆藏和地图的更多信息,请查看this tutorial。
答案 1 :(得分:12)
您可以使用以下内容:
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);
}
}
答案 2 :(得分:7)
Java语言规范,第15.10节,声明:
创建数组创建表达式 一个对象是一个新的数组 元素属于指定的类型 PrimitiveType或 ClassOrInterfaceType。它是一个 如果是编译时错误 ClassOrInterfaceType不表示a 可再生型(§4.7)。
和
上述规则意味着要素 键入数组创建表达式 其他不能是参数化类型 而不是无限的通配符。
你可以做的最接近的是使用未经检查的强制转换,无论是原始类型,还是来自无限制的通配符:
HashMap<String, String>[] responseArray = (Map<String, String>[]) new HashMap<?,?>[games.size()];
你的版本显然更好: - )
答案 3 :(得分:4)
Java不希望你创建一个HashMaps数组,但是它可以让你创建一个Objects数组。所以,只需在HashMap周围编写一个类声明作为shell,然后创建该类的数组。如果您愿意,这可以存储一些关于HashMaps的额外数据 - 鉴于您已经有一些复杂的数据结构,这可能是一个好处。
这是什么样的:
private static someClass[] arr = new someClass[someNum];
和
public class someClass {
private static int dataFoo;
private static int dataBar;
private static HashMap<String, String> yourArray;
...
}
答案 4 :(得分:3)
您不能拥有泛型类型的数组。请改用List
。
答案 5 :(得分:0)
关于@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
}
}