簡體   English   中英

ArrayList of Integers附加值? 能做到嗎

[英]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

不,這不容易也不漂亮。 您最好使用FastUtilHPPCTrove之類的庫提供的“原始”集合。 它們帶有各種可以保存基本類型的集合,並且通常比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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM