[英]ArrayList of Integers value Addition? Can it be done?
我創建了一個整數數組列表,如下所示:
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
所以我想知道,最簡單的替代方法是什么?
謝謝
嘗試這個
tiles_cell_nums.set(0, tiles_cell_nums.get(0) + 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);
好吧,我知道只有一種方法可以做這些事情:
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派生的)對象的ArrayList更易於使用。
我最喜歡的是HPPC ,但是您可以嘗試一下,看看最喜歡哪個(或者哪個擁有符合您要求的許可證)。
編輯:要明確,原始集合不會將您從set(get()+ something)慣用語中拯救出來。 通常,它們只比帶盒裝的基元的集合更易於使用。
我們也可以使用listIterator(int Index)方法,listIterator(0).next()幫助獲取int Object。執行加法后,我們可以將其設置回第0個位置。
tiles_cell_nums.set(0,tiles_cell_nums.listIterator(0).next()+1);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.