定义含多个ArrayList的二维ArrayList时出现参数数量错误问题
解决Java中二维ArrayList定义的参数数量错误问题
你这段代码报错的核心原因是Java的ArrayList只能接受一个泛型类型参数,你给它传了三个ArrayList<String>作为泛型参数,这完全不符合Java泛型的语法规则呀~
要实现你想要的「主ArrayList容纳多个子ArrayListArrayList<String>,也就是:
ArrayList<ArrayList<String>> newlist = new ArrayList<ArrayList<String>>();
如果是Java 7及以上版本,还可以用菱形语法简化,编译器会自动帮你推断泛型类型,写起来更清爽:
ArrayList<ArrayList<String>> newlist = new ArrayList<>();
接下来给你举个具体的例子,如何把你提到的[parking]、[bike]、[disability]这些子列表加入主列表:
// 先创建各个子列表 ArrayList<String> parkingFacility = new ArrayList<>(); parkingFacility.add("parking"); // 这里还可以添加更多和停车设施相关的元素,比如"covered"之类的 ArrayList<String> bikeFacility = new ArrayList<>(); bikeFacility.add("bike"); ArrayList<String> disabilityFacility = new ArrayList<>(); disabilityFacility.add("disability"); // 把所有子列表添加到主列表中 newlist.add(parkingFacility); newlist.add(bikeFacility); newlist.add(disabilityFacility);
要是你的子列表里只有单个元素,Java 9及以上版本还能这么写,更简洁:
newlist.add(new ArrayList<>(List.of("parking"))); newlist.add(new ArrayList<>(List.of("bike"))); newlist.add(new ArrayList<>(List.of("disability")));
说白了,二维ArrayList就是「元素本身是ArrayList的ArrayList」,所以外层ArrayList的泛型参数只需要指定内层列表的类型就行,不用传多个参数~
内容的提问来源于stack exchange,提问作者unkwndev
相关产品推荐
相关产品推荐

