当前位置:   article > 正文

java尖括号类型匹配

java尖括号类型匹配
  1. /**
  2. * Definition for a binary tree node.
  3. * public class TreeNode {
  4. * int val;
  5. * TreeNode left;
  6. * TreeNode right;
  7. * TreeNode() {}
  8. * TreeNode(int val) { this.val = val; }
  9. * TreeNode(int val, TreeNode left, TreeNode right) {
  10. * this.val = val;
  11. * this.left = left;
  12. * this.right = right;
  13. * }
  14. * }
  15. */
  16. class Solution {
  17. public List<List<Integer>> levelOrder(TreeNode root) {
  18. Deque<TreeNode> queue = new LinkedList<TreeNode>();
  19. List<List<Integer>> levelListAll = new ArrayList<List<Integer>>();
  20. queue.offer(root);
  21. while(!queue.isEmpty()){
  22. int level_size = queue.size();
  23. List<Integer> levelList = new ArrayList<Integer>();
  24. for(int i=0;i<level_size;i++){
  25. TreeNode node = queue.poll();
  26. levelList.add(node.val);
  27. if(node.left!=null){
  28. queue.offer(node.left);
  29. }
  30. if(node.right!=null){
  31. queue.offer(node.right);
  32. }
  33. }
  34. levelListAll.add(levelList);
  35. }
  36. return levelListAll;
  37. }
  38. }

遇到了错误Line 19: error: incompatible types: ArrayList<List<Integer>> cannot be converted to List<ArrayList<Integer>> List<ArrayList<Integer>> levelListAll = new ArrayList<List<Integer>>(); ^ Line 34: error: incompatible types: List<Integer> cannot be converted to ArrayList<Integer> levelListAll.add(levelList); ^ Line 36: error: incompatible types: List<ArrayList<Integer>> cannot be converted to List<List<Integer>> return levelListAll; ^ 3 errors

这个错误的原因是使用了 List<ArrayList<Integer>> levelListAll = new ArrayList<List<Integer>>();

而这里本来应该是 List<List<Integer>> levelListAll = new ArrayList<List<Integer>>();

gpt给出的解释是

在这段代码中,问题在于声明的变量类型和初始化的类型不匹配。

声明的变量类型是 List<ArrayList<Integer>>,它声明了一个列表,其中的每个元素都是 ArrayList<Integer> 类型的列表。这意味着你期望使用 ArrayList<Integer> 的列表。

而在初始化时,你试图将其初始化为 new ArrayList<List<Integer>>(). 这个初始化表达式创建了一个 ArrayList<List<Integer>> 类型的对象,其中的每个元素都是 List<Integer> 类型的列表。这与声明的类型不匹配,因为声明的类型期望使用的是 ArrayList<Integer> 类型的列表,而不是 List<Integer> 类型的列表。

正确的声明应该是 List<List<Integer>>,以匹配初始化时使用的类型。

按照我的理解,右边的始终应该比左边具体,右边是ArrayList,左边就应该是List,现在最内层,右边是List,左边是ArrayList,左边比右边具体了,就抽象了。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/258891?site
推荐阅读
相关标签
  

闽ICP备14008679号