为什么不能初始ArrayList<ArrayList<>> 而要ArrayList<List<>> ?

来源:6-4 队列的典型应用 Binary Tree Level Order Traversal

weixin_慕沐9302940

2020-08-13

bobo老师你好
在102题inoder binary tree level order 您的答案中有这样的语句
ArrayList<List<Integer>> res = new ArrayList<List<Integer>>();
为什么当我写成如下会报错说data type不符合呢? 为什么不能如此初始化?
ArrayList<ArrayList<Integer>> res = new ArrayList<ArrayList<Integer>>();
List<List<Integer>> res = new List<List<Integer>>();

写回答

1回答

liuyubobobo

2020-08-13

List<List<Integer>> res = new List<List<Integer>>();

不可以,是因为 List 是一个接口,不能实例化;


List<List<Integer>> res = new ArrayList<List<Integer>>();

这样写是可以的。


ArrayList<ArrayList<Integer>> res = new ArrayList<ArrayList<Integer>>(); 语法本身没问题,但是因为这个问题返回的类型是List<List<Integer>>,res 作为返回值,其泛型类型要和这个返回值的泛型类型保持一致,即泛型类型必须是 List<Integer> 的。


继续加油!:) 

1
1
weixin_慕沐9302940
非常感谢!
2020-08-14
共1条回复

玩转算法面试-- Leetcode真题分门别类讲解

课程配套大量BAT面试真题,高频算法题解析,强化训练

7408 学习 · 1150 问题

查看课程