我被一个问题卡住了,作为 Java 的初学者,它似乎让人不知所措。有人可以帮我理解为什么我的代码不起作用吗?[已结束]

I am stuck at a question and as a beginner in Java it seems overwhelming. Can someone help me understand why exactly my code isn't working? [closed]

提问人:Shruti Tiwari 提问时间:7/4/2023 最后编辑:Federico klez CullocaShruti Tiwari 更新时间:7/4/2023 访问量:80

问:


想改进这个问题吗?通过编辑这篇文章添加详细信息并澄清问题。

5个月前关闭。

class Solution {     

    public List<List<Integer>> generate(int numRows) {  

        List<List<Integer>> l = new ArrayList<List<Integer>>();        
        ArrayList<Integer> row;         
        int v;        
        for(int i=0;i<numRows;i++)         
        {              
            row = new ArrayList<Integer>();             
            for(int j=0;j<=i;j++)              
            {                  
                if(j==0||j==i)                  
                {                   
                    row.add(1);                 
                    continue;                  
                }                  
                v=l.get(i-1).get(j-1)+l.get(i-1).get(j);            
                row.add(v);              
            }              
            l.addAll(row);         
        }         
        return l;     
    } 
}

这是我的代码,我很困惑为什么我不能使用方法将集合()添加到列表中。addAll()ArrayList

如果我替换它就可以了。addAll()add()

这是一个帕斯卡三角形问题,逻辑是正确的,通过方法替换得到了正确的答案。addAll()add()

这也是我得到的错误:

错误:不兼容的类型:无法将 ArrayList 转换为Collection<? extends List<Integer>> l.addAll(row);

我想知道我们是否可以使用方法将一个添加到列表中。ArrayListaddAll

Java 列表 ArrayList 集合

评论

0赞 Basil Bourque 7/4/2023
可怜的标题。重写以总结您的具体技术问题。
1赞 Jon Skeet 7/4/2023
此外,请使用传统的缩进格式化您的代码 - 像这样阅读真的很难。任何 IDE 都应该能够自动为您格式化代码。发布问题时,问问自己:“我是否想考虑帮助某人解决这样的问题,还是太难理解了?
0赞 Jon Skeet 7/4/2023
提示:你希望做什么?它的文档有什么建议?假设您是一个变量,并且是一个变量,您是否希望在这种情况下能够调用,如果是这样,您希望它做什么?l.addAll(row)lList<String>rowStringl.addAll(row)
0赞 Andrej Istomin 7/4/2023
我尝试运行您的代码,但得到“ 没有方法的签名:java.lang.Integer.get() 不适用于参数类型:(java.lang.Integer) values: [0]l.get(i-1).get(j-1)l' 是一个整数列表,你取整数并尝试从中得到一些东西......为什么?. This expression doesn't make sense to me: .
0赞 A R K 7/4/2023
addAll() 方法期望相同类型的源列表 List<List<Integer>,但您正在尝试使用 addAll 添加 List<Integer>,解决此问题的一种方法是使用此代码 l.addAll(Collections.singleton(row));

答:

1赞 shmosel 7/4/2023 #1

的目的是将多个项目添加到列表中。因此,如果您有两个相同类型的列表,并且想要将元素从一个列表复制到另一个列表,则可以调用 ,而不必调用 中的每个元素。addAll()list1.addAll(list2)list1.add()list2

在本例中,外部列表包含 类型的元素。这意味着它需要一个列表集合作为其参数,但你只传递一个 .如果您打算将该列表添加到其他列表中,只需使用 。ListaddAll()List<Integer>ladd()