问题思考
如何安全删除 List 中的元素,for 循环中删除一定会报错吗
方法一:使用 Iterator 的 remove() 方法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| public class Test {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("one");
list.add("two");
list.add("three");
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
String item = iterator.next();
if ("two".equals(item)) {
iterator.remove();
}
}
System.out.println(list);
}
}
|
方法二:使用 Collection.removeIf() 方法
1
2
3
4
5
6
7
8
9
10
| public class Test {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("one");
list.add("two");
list.add("three");
list.removeIf(item -> item.equals("two"));
System.out.println(list);
}
}
|
方法三:使用 Java 8 Stream API
1
2
3
4
5
6
7
8
9
10
| public class Test {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("one");
list.add("two");
list.add("three");
list = list.stream().filter(item -> !"two".equals(item)).collect(Collectors.toList());
System.out.println(list);
}
}
|
方法四:使用 for 循环(正序遍历)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| public class Test {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("one");
list.add("two");
list.add("three");
for (int i = 0; i < list.size(); i++) {
if ("two".equals(list.get(i))) {
list.remove(i);
i = i - 1;
}
}
System.out.println(list);
}
}
|
方法五:使用 for 循环(逆序遍历)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| public class Test {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("one");
list.add("two");
list.add("three");
for (int i = list.size() - 1; i >= 0; i--) {
if ("two".equals(list.get(i))) {
list.remove(i);
}
}
System.out.println(list);
}
}
|
如何删除 List 中奇数位置的元素
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| public class Test {
public static void main(String[] args) {
List<Integer> list = new ArrayList<>();
for (int i = 0; i < 10; i++) {
list.add(i);
}
System.out.println("原始列表: " + list);
Iterator<Integer> iterator = list.iterator();
int index = 0;
while (iterator.hasNext()) {
iterator.next();
if (index % 2 == 0) {
iterator.remove();
}
index++;
}
System.out.println("删除奇数位置元素后的列表: " + list);
}
}
|
原始列表: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
删除奇数位置元素后的列表: [1, 3, 5, 7, 9]
版权声明:
本博客所有文章除特别声明外,均采用
CC BY-NC-SA 4.0
许可协议,转载请注明出处!