ps1:我知道 List 是和接口,所以我不能实例化它的类型和对象。
List<Map<String, String>> listMap = new ArrayList<Map<String, String>>();
你是对的,List
是一个接口,因此你将无法实例化一个接口。您需要使用接口的一些实现类来实例化。ArrayList
是接口的实现类,List
在able语句中使用。
ps2:我可以将listMap 声明为ArrayList 类型。将其声明为列表有什么好处。
您总是可以ArrayList
在左侧使用,即
ArrayList<Map<String, String>> listMap = new ArrayList<Map<String, String>>();
使用接口的优势: 如果你想在类中使用你的变量对象(listMap),那么最好使用接口作为类型,但是如果你的变量对象(lsitMap)在你的程序本地本地,那么我认为没有任何额外的优势。
现在你会想Map
,这又是一个接口。请注意,您不是Map
通过上述语句实例化对象。您只是提到您的listMap
列表将包含Map
类型元素。
同样,当您尝试实例化要添加的元素时listMap
,您将需要一个接口的实现类,Map
例如HashMap
如下:
List<Map<String, String>> listMap = new ArrayList<Map<String, String>>();
Map<String, String> lsitMapElement1 = new HashMap<String, String>();
lsitMapElement1.put("key1", "value1");
listMap.add(lsitMapElement1 );
Map<String, String> lsitMapElement2 = new HashMap<String, String>();
lsitMapElement2.put("key2", "value2");
listMap.add(lsitMapElement2);
希望这能让事情变得清楚。