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