for迴圈呼叫刪除方法報錯解決辦法
阿新 • • 發佈:2018-11-04
1.每次刪除一個元素,索引往前移,即i-1.
List<String> list = new ArrayList<String>();
list.add("111");
list.add("222");
list.add("333");
list.add("444");
list.add("555");
list.add("666");
for (int i = 0; i < list.size(); i++) {
String str = list.get(i);
if(str.equals("111")){
list.remove(str);
i=i-1;
}
}
list.forEach(str -> System.out.println(str));
2.倒著往前迴圈找,然後刪除符合條件的元素
List<String> list = new ArrayList<String>();
list.add("111");
list.add("222");
list.add("333");
list.add("444");
list.add("555");
list.add("666");
for (int i =list.size()-1; i>=0 ; i--) {
String str = list.get(i);
if(str.equals("111")){
list.remove(str);
}
}
list.forEach(str -> System.out.println(str));
3.迭代器遍歷去除元素
List<String> list = new ArrayList<String>();
list.add("111");
list.add("222");
list.add("333");
list.add("444");
list.add("555");
list.add("666");
Iterator<String> iterator = list.iterator();
while(iterator.hasNext()){
String str = iterator.next();
if(str.equals("111")){
iterator.remove();
}
}
list.forEach(str -> System.out.println(str));
List<String> list = new ArrayList<String>();
list.add("111");
list.add("222");
list.add("333");
list.add("444");
list.add("555");
list.add("666");
for (int i = 0; i < list.size(); i++) {
String str = list.get(i);
if(str.equals("111")){
list.remove(str);
i=i-1;
}
}
list.forEach(str -> System.out.println(str));
2.倒著往前迴圈找,然後刪除符合條件的元素
List<String> list = new ArrayList<String>();
list.add("111");
list.add("222");
list.add("333");
list.add("444");
list.add("555");
list.add("666");
for (int i =list.size()-1; i>=0 ; i--) {
String str = list.get(i);
if(str.equals("111")){
list.remove(str);
}
}
list.forEach(str -> System.out.println(str));
3.迭代器遍歷去除元素
List<String> list = new ArrayList<String>();
list.add("111");
list.add("222");
list.add("333");
list.add("444");
list.add("555");
list.add("666");
Iterator<String> iterator = list.iterator();
while(iterator.hasNext()){
String str = iterator.next();
if(str.equals("111")){
iterator.remove();
}
}
list.forEach(str -> System.out.println(str));