我创建了一个Integers的ArrayList,如下所示:
ArrayList tiles_cell_nums = new ArrayList<Integer>();
tiles_cell_nums.add(0);
tiles_cell_nums.add(0);
现在我尝试增加ArrayList中的一个值,如下所示:
tiles_cell_nums.get(0) += 1;
但这不是让我这样做的:
The Left side of an assignment must be a variable
所以我想知道,这样做最简单的选择是什么?
谢谢
答案 0 :(得分:3)
试试这个
tiles_cell_nums.set(0, tiles_cell_nums.get(0) + 1);
答案 1 :(得分:1)
在int i;
中,i
是一个变量。使用i
作为指针可以执行i++
。但是,您无法直接使用tiles_cell_nums.get(0)++
。
final int i = tiles_cell_nums.get(0) + 1;
tiles_cell_nums.set(0, i);
答案 2 :(得分:1)
嗯,我只知道有一种方法可以做这些事情:
ArrayList<int[]> intList = new ArrayList<>();
intList.add(new int[]{23});
intList.get(0)[0] += 1;
System.out.println("Number is: " + intList.get(0)[0]);
号码是:24
不,这不容易也不漂亮。您最好使用FastUtil,HPPC或Trove等库提供的“原始”集合。它们带有各种可以保存原始类型的集合,并且通常比Integer(或任何Number派生)对象的ArrayLists更容易使用。
我最喜欢的是HPPC,但你可以尝试一下,看看你最喜欢哪一个(或者哪个版本有符合你要求的许可证)。
编辑:要清楚,原始集合不会将你从集合(get()+ something)成语中拯救出来。它们通常比盒装基元的集合更容易使用。
答案 3 :(得分:1)
我们也可以使用listIterator(int Index)方法,listIterator(0).next()帮助取int Object.After执行后我们可以设置回零#39; th位置。
tiles_cell_nums.set(0,tiles_cell_nums.listIterator(0).next()+1);