昨天一位專案組同事需要在arraylist中刪除所有不等於指定值的元素,但是她弄了很久,發現總是刪得不完全。剛好我以前做過類似的功能,就告訴她是因為arraylist刪除元素後長度變小了,元素的索引也會跟著改變,但是迭代的下標沒有跟著相應的改變的緣故。
將一些刪除方法做一些總結:
/*** 刪除arraylist中值為"c"的元素
*/public
static
void
main(string args)
/**
* 刪除list中值為"c"的元素
* * 這種方式:
*
* 當值為"c"的元素在arraylist中不連續儲存的時候,是可以把值為"c"的元素全部刪掉
*
* 但是當值為"c"的元素在arraylist中有連續儲存的時候,就沒有把值為"c"的元素全部刪除
* 因為刪除了元素,arraylist的長度變小了,索引也會改變,但是迭代的下標沒有跟著變小
*/public
static
void
removelistelement1(listlist)
} }
/**
* 刪除arraylist中值為"c"的元素
* * 這種方式:
* * 不管值為"c"的元素在arraylist中是否連續,都可以把值為"c"的元素全部刪除
*/public
static
void
removelistelement2(listlist)
} }
/**
* 刪除arraylist中值為"c"的元素
* * 這種方式:
* * 不管值為"c"的元素在list中是否連續,都可以把值為"c"的元素全部刪除
* * 需保證沒有其他執行緒同時在修改
*/public
static
void
removelistelement3(listlist)
} }
動態刪除ArrayList中的元素
public class arraylisttest 刪除list中值為 c 的元素 這種方式 當值為 c 的元素在arraylist中不連續儲存的時候,是可以把值為 c 的元素全部刪掉 但是當值為 c 的元素在arraylist中有連續儲存的時候,就沒有把值為 c 的元素全部刪除 因為刪除了元素,...
動態刪除ArrayList中的元素
刪除arraylist中值為 c 的元素 public static void main string args 刪除list中值為 c 的元素 這種方式 當值為 c 的元素在arraylist中不連續儲存的時候,是可以把值為 c 的元素全部刪掉 但是當值為 c 的元素在arraylist中有連續儲...
ArrayList中資料刪除
在迴圈arrayllist時,經常會遇到remove操作,那麼arraylist的remove的底層是怎麼做的?abstractlist中,有乙個屬性modcount,這個屬性是跟蹤list中資料被修改的次數,任何對list的add remove操作,都將導致modcount 在abstractli...