Jor*_*ren 47 java arrays hashmap
这是我试图做的,但它给了我一个警告:
HashMap<String, String>[] responseArray = new HashMap[games.size()];
Run Code Online (Sandbox Code Playgroud)
类型安全:HashMap []类型的表达式需要未经检查的转换以符合HashMap []
Bal*_*usC 56
是什么赋予了?有用.只是忽略它:
@SuppressWarnings("unchecked")
Run Code Online (Sandbox Code Playgroud)
不,你不能参数化它.不过我宁愿用一个List<Map<K, V>>.
List<Map<String, String>> listOfMaps = new ArrayList<Map<String, String>>();
Run Code Online (Sandbox Code Playgroud)
要了解有关集合和地图的更多信息,请查看本教程.
alc*_*ist 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);
}
}
Run Code Online (Sandbox Code Playgroud)
Java语言规范第15.10节规定:
数组创建表达式创建一个对象,该对象是一个新数组,其元素的类型是PrimitiveType或ClassOrInterfaceType指定的类型.如果ClassOrInterfaceType不表示可重新类型(第4.7节),则为编译时错误.
和
上述规则意味着数组创建表达式中的元素类型不能是参数化类型,而不是无界通配符.
你可以做的最接近的是使用未经检查的强制转换,可以是原始类型,也可以是无界的通配符:
HashMap<String, String>[] responseArray = (Map<String, String>[]) new HashMap<?,?>[games.size()];
Run Code Online (Sandbox Code Playgroud)
你的版本显然更好:-)