java 将元素添加到ArrayList&lt;ArrayList< Integer>&gt;

wnavrhmk  于 9个月前  发布在  Java
关注(0)|答案(2)|浏览(97)
class solution{
    public List<List<Integer>> solve(int[] nums) 
    {
        List<List<Integer>> ans = new ArrayList<List<Integer>>();
        HashMap<Integer, Integer> hm = new HashMap<>();
        for(int i = 0; i<nums.length; i++){
            if(hm.containsKey(nums[i])){
                hm.put(nums[i], hm.get(nums[i])+1);
            }
            else{
                hm.put(nums[i], 1);
            }
            if(ans.size()<hm.get(nums[i])){
                ans.add(new ArrayList<Integer>());
            }
            int row = hm.get(nums[i]) - 1;
            int el = nums[i];
            ans.add(row, el); //Line 18: error: incompatible types: int cannot be converted to List<Integer>
        }
        return ans;
    }
}

字符串
当尝试将元素添加到ArrayList<ArrayList >中时,
不兼容的类型:int不能转换为List
我使用了语法obj.add(row,element);
如何在ArrayList<ArrayList >中的特定行添加元素?

8yoxcaq7

8yoxcaq71#

List<List<Foo>>被视为二维(2D)List
List<List<Foo>> myList = = new ArrayList<> ();
在后面的代码中,假设这些元素实际上存在,以访问特定的Foo,则使用两个下标:

Foo myFoo = myList.get(12).get(7);

字符串
这相当于:

List<Foo> row = myList.get(12); // returns a `List<Foo>`
Foo myFoo = row.get(7);


如果元素存在,并且您希望在特定位置添加一个元素,则还可以使用两个下标:

myList.get(15).add (20,newFoo (482));


如果myList.get(15)不存在,你可以创建它:

List<Foo> line = new List<> ();
for (int i = 0; i < 21; i++) {
   line.add (new Foo (i));
}
myList.add (15, line);


创建和填充2D List的一般方法是一次创建一行,并在完成时添加每行:

List<List<Foo>> myList = new <> ArrayList<> ();
int outerSize,  innerSize;
...
for (int outer = 0; outer < outerSize; outer++) {
   List<Foo> line = new ArrayList<> ();
   innersize = getInner (outer);
   for (int inner = 0; i < innerSize; inner++) {
       line.add (new Foo (outer, inner);
   }
   myList.add (line);
}

注意事项

  • 在你的代码中,由于你使用<Integer>作为内部类型,你可以依靠编译器使用自动装箱和取消装箱。
  • 当添加一个元素到一个List的索引,索引的值必须大于或等于零,并小于或等于当前Listsize()add (int index, E e)方法将 * 不 * 填充空值,如果索引的值大于size ()
1cklez4t

1cklez4t2#

将线路从

`ans.add(row, el);`

字符串

`ans.get(row).add(el)` has worked.


对于List<List<Integer>>,首先使用Obj.get(row)(外部列表)访问所需的行,然后添加元素(内部列表)已经工作。

相关问题