[英]Remove Item from ArrayList
我有一個ArrayList
假設list
,它有 8 個項目 AH,現在我想從list
刪除存儲在 int 數組中的 1,3,5 個位置項,我該怎么做。
我正在嘗試這樣做
ArrayList<String> list = new ArrayList<String>();
list.add("A");
list.add("B");
list.add("C");
list.add("D");
list.add("E");
list.add("F");
list.add("G");
list.add("H");
int i[] = {1,3,5};
for (int j = 0; j < i.length; j++) {
list.remove(i[j]);
}
但是在更改了數組的第一個刪除位置后,在下一次迭代中它刪除了錯誤的元素或給出異常。
在這種特定情況下,您應該按降序刪除元素。 首先索引5
,然后是3
,然后是1
。 這將從列表中刪除元素而不會產生不良副作用。
for (int j = i.length-1; j >= 0; j--) {
list.remove(i[j]);
}
您可以使用ListIterator
從ArrayList
刪除元素,
ListIterator listIterator = List_Of_Array.listIterator();
/* Use void remove() method of ListIterator to remove an element from List.
It removes the last element returned by next or previous methods.
*/
listIterator.next();
//remove element returned by last next method
listIterator.remove();//remove element at 1st position
listIterator.next();
listIterator.next();
listIterator.remove();//remove element at 3rd position
listIterator.next();
listIterator.next();
listIterator.remove();//remove element at 5th position
public void DeleteUserIMP(UserIMP useriamp) {
synchronized (ListUserIMP) {
if (ListUserIMP.isEmpty()) {
System.out.println("user is empty");
} else {
Iterator<UserIMP> it = ListUserIMP.iterator();
while (it.hasNext()) {
UserIMP user = it.next();
if (useriamp.getMoblieNumber().equals(user.getMoblieNumber())) {
it.remove();
System.out.println("remove it");
}
}
// ListUserIMP.remove(useriamp);
System.out.println(" this user removed");
}
Constants.RESULT_FOR_REGISTRATION = Constants.MESSAGE_OK;
// System.out.println("This user Deleted " + Constants.MESSAGE_OK);
}
}
我假設數組 i 是升序排序的,這是迭代器的另一個解決方案,它更通用:
ArrayList<String> list = new ArrayList<String>();
list.add("A");
list.add("B");
list.add("C");
list.add("D");
list.add("E");
list.add("F");
list.add("G");
list.add("H");
int i[] = {1,3,5};
Iterator<String> itr = list.iterator();
int pos = 0;
int index = 0;
while( itr.hasNext() ){
itr.next();
if( pos >= i.length ){
break;
}
if( i[pos] == index ){
itr.remove();
pos++;
}
index++;
}
String[] mString = new String[] {"B", "D", "F"};
for (int j = 0; j < mString.length-1; j++) {
List_Of_Array.remove(mString[j]);
}
這個怎么樣? 想一想——
import java.util.ArrayList;
class Solution
{
public static void main (String[] args){
ArrayList<String> List_Of_Array = new ArrayList<String>();
List_Of_Array.add("A");
List_Of_Array.add("B");
List_Of_Array.add("C");
List_Of_Array.add("D");
List_Of_Array.add("E");
List_Of_Array.add("F");
List_Of_Array.add("G");
List_Of_Array.add("H");
int i[] = {1,3,5};
for (int j = 0; j < i.length; j++) {
List_Of_Array.remove(i[j]-j);
}
System.out.println(List_Of_Array);
}
}
輸出是-
[A, C, E, G, H]
試試這個方法
ArrayList<String> List_Of_Array = new ArrayList<String>();
List_Of_Array.add("A");
List_Of_Array.add("B");
List_Of_Array.add("C");
List_Of_Array.add("D");
List_Of_Array.add("E");
List_Of_Array.add("F");
List_Of_Array.add("G");
List_Of_Array.add("H");
int i[] = {5,3,1};
for (int j = 0; j < i.length; j++) {
List_Of_Array.remove(i[j]);
}
如果您使用“=”,則會在第二個列表中為原始數組列表創建一個副本,但引用是相同的,因此如果您在一個列表中更改,另一個列表也會被修改。 用這個代替“=”
List_Of_Array1.addAll(List_Of_Array);
arraylist 的 remove(int index) 方法刪除列表中指定位置(索引)的元素。 刪除 arraylist 項后,將任何后續元素向左移動。
表示數組列表是否包含 {20,15,30,40}
我調用了方法:arraylist.remove(1)
那么數據 15 將被刪除,30 & 40 這兩項將左移 1。
為此,您必須先刪除 arraylist 的更高索引項。
所以..對於你給定的情況..代碼將是..
ArrayList<String> list = new ArrayList<String>();
list.add("A");
list.add("B");
list.add("C");
list.add("D");
list.add("E");
list.add("F");
list.add("G");
list.add("H");
int i[] = {1,3,5};
for (int j = i.length-1; j >= 0; j--) {
list.remove(i[j]);
}
如果您需要刪除列表中的結束項可以使用此代碼
if(yourList.size() != 0){
yourList.remove(yourList.size()-1);
}
或者您可能需要在選擇列表中的項目后刪除一段時間
if(selected){// boolean for checked add or remove
yourList.add(position , id); // add to list by position can use your list position
}else{
if(yourList.size() != 0){
yourList.remove(position);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.