Java 从ArrayList中删除项

Java 从ArrayList中删除项,java,arraylist,Java,Arraylist,我有一个数组列表假设列表,它有8个项目A-H,现在我想从列表中删除存储在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

我有一个
数组列表
假设
列表
,它有8个项目A-H,现在我想从
列表
中删除存储在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]);
}
ArrayList list=new ArrayList();
列表。添加(“A”);
列表。添加(“B”);
列表。添加(“C”);
列表。添加(“D”);
列表。添加(“E”);
列表。添加(“F”);
列表。添加(“G”);
列表。添加(“H”);
int i[]={1,3,5};
对于(int j=0;j
但在数组的第一个被删除的项被更改之后,在下一次迭代中它删除了错误的元素或给出异常

在这种特定情况下,应该按降序删除元素。首先索引
5
,然后索引
3
,然后索引
1
。这将从列表中删除元素,而不会产生不良的副作用

for (int j = i.length-1; j >= 0; j--) {
    list.remove(i[j]);
}
在这种特定情况下,应按降序删除元素。首先索引
5
,然后索引
3
,然后索引
1
。这将从列表中删除元素,而不会产生不良的副作用

for (int j = i.length-1; j >= 0; j--) {
    list.remove(i[j]);
}
String[]mString=新字符串[]{“B”、“D”、“F”};
对于(int j=0;j
String[]mString=新字符串[]{“B”、“D”、“F”};
对于(int j=0;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);

        }


}

这个怎么样?想一想-

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);

        }


}

您可以使用
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

您可以使用
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
这样试试看

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]);
}
ArrayList List_Of_Array=new ArrayList();
列出_数组的_。添加(“A”);
数组的列表。添加(“B”);
数组的列表。添加(“C”);
数组的列表。添加(“D”);
数组的列表。添加(“E”);
数组的列表。添加(“F”);
数组的列表。添加(“G”);
列出_数组的_。添加(“H”);
int i[]={5,3,1};
对于(int j=0;j
这样试试看

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]);
}
ArrayList List_Of_Array=new ArrayList();
列出_数组的_。添加(“A”);
数组的列表。添加(“B”);
数组的列表。添加(“C”);
数组的列表。添加(“D”);
数组的列表。添加(“E”);
数组的列表。添加(“F”);
数组的列表。添加(“G”);
列出_数组的_。添加(“H”);
int i[]={5,3,1};
对于(int j=0;j
公共void DeleteUserIMP(UserIMP useriamp){
已同步(ListUserIMP){
if(ListUserIMP.isEmpty()){
System.out.println(“用户为空”);
}否则{
迭代器it=ListUserIMP.Iterator();
while(it.hasNext()){
UserIMP user=it.next();
if(useriamp.getMoblieNumber().equals(user.getMoblieNumber())){
it.remove();
System.out.println(“删除它”);
}
}
//ListUserIMP.remove(useriamp);
System.out.println(“此用户已删除”);
}
Constants.RESULT\u用于注册=Constants.MESSAGE\u OK;
//System.out.println(“此用户已删除”+常量。消息\u确定);
}
}
公共void DeleteUserIMP(UserIMP useriamp){
已同步(ListUserIMP){
if(ListUserIMP.isEmpty()){
System.out.println(“用户为空”);
}否则{
迭代器it=ListUserIMP.Iterator();
while(it.hasNext()){
UserIMP user=it.next();
if(useriamp.getMoblieNumber().equals(user.getMoblieNumber())){
it.remove();
System.out.println(“删除它”);
}
}
//ListUserIMP.remove(useriamp);
System.out.println(“此用户已删除”);
}
Constants.RESULT\u用于注册=Constants.MESSAGE\u OK;
//System.out.println(“此用户已删除”+常量。消息\u确定);
}
}
如果使用“=”,则会在第二个列表中为原始arraylist创建一个副本,但引用是相同的,因此如果在一个列表中更改,另一个列表也会被修改。使用此选项而不是“=”

如果使用“=”,则会在第二个列表中为原始arraylist创建一个副本,但引用是相同的,因此如果在一个列表中更改,另一个列表也会被修改。使用此选项而不是“=”

如前所述

iterator.remove()
这可能是在循环过程中删除列表项的唯一安全方法

为了更深入地理解使用迭代器删除项,请尝试查看前面提到的

iterator.remove()
这可能是在循环过程中删除列表项的唯一安全方法

为了更深入地理解使用迭代器删除项,请尝试查看arraylist的这个

remove(int-index)方法删除列表中指定位置(index)的元素。删除arraylist项后,将所有后续元素向左移动

表示如果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]);
}
ArrayList list=new ArrayList();
列表。添加(“A”);
列表。添加(“B”);
列表。添加(“C”);
列表。添加(“D”);
列表。添加(“E”);
列表。添加(“F”);
列表。添加(“G”);
列表。添加(“H”);
int i[]={1,3,5};
对于(int j=i.length-1;j>=0;j--){
删除(i[j]);
}
arraylist的remove(int-index)方法删除列表中指定位置(index)的元素。删除arraylist项后,将所有后续元素向左移动

表示如果arraylist包含{20,15,30,40}

我已经调用了方法:arraylist.remove(1)

然后数据15将被删除,30和40这两个项目将左移1

因此,您必须删除更高的索引项
 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);
 }
}