Java二维ArrayList中for-each循环的使用问题及解决方法
解决二维ArrayList的for-each循环泛型问题
问题出在你外部for-each循环里的ArrayList s是原始类型(未指定泛型参数),编译器无法确定s中的元素类型,因此内部循环只能用Object来声明变量。
要修复这个问题,只需要在外部循环中明确指定泛型类型即可:
// 修改后的嵌套for-each循环 for (ArrayList<String> s : shoppingList){ for (String t : s) { System.out.println(t); } }
额外优化建议
初始化ArrayList时建议使用菱形语法(Java 7及以上支持),避免原始类型带来的警告和类型安全问题,比如:
ArrayList<String> bakeryList = new ArrayList<>(); ArrayList<ArrayList<String>> shoppingList = new ArrayList<>();
如果使用Java 10及以上版本,还可以用var关键字让编译器自动推断类型,代码更简洁:
for (var s : shoppingList){ for (var t : s) { System.out.println(t); } }
内容的提问来源于stack exchange,提问作者jerseypizza
相关产品推荐
相关产品推荐

