List remove()方法介绍

xiaoxiao2021-02-27  206

public class Remove { public static void main(String[] args) { String str1 = new String("abc"); String str2 = new String("abc"); String str3 = new String("abc"); String str4 = new String("abc"); List<String> list = new ArrayList<String>(); list.add(str1); list.add(str2); list.add(str3); list.add(str4); // 不能全部删除符合条件的数据 // 原因:List每remove掉一个元素以后,后面的元素都会向前移动,此时如果执行i=i+1,则刚刚移过来的元素没有被读取 System.out.println("list.size() = " + list.size()); for (int i = 0; i < list.size(); i++) { String s = list.get(i); if ("abc".equals(s)) { list.remove(i); } } System.out.println("after remove : list.size() = " + list.size()); // 三种解决办法 // 1. 倒序遍历 System.out.println("list.size() = " + list.size()); for (int i = list.size() - 1; i >= 0; i--) { String s = list.get(i); if ("abc".equals(s)) { list.remove(i); } } System.out.println("after remove : list.size() = " + list.size()); // 2. 每移除一个元素以后把i移回来 System.out.println("list.size() = " + list.size()); for (int i = 0; i < list.size(); i++) { String s = list.get(i); if ("abc".equals(s)) { list.remove(i); i--; } } System.out.println("after remove : list.size() = " + list.size()); // 3. 使用iterator.remove()方法移除 System.out.println("list.size() = " + list.size()); Iterator<String> it = list.iterator(); while (it.hasNext()) { String s = it.next(); if ("abc".equals(s)) { it.remove(); } } System.out.println("after remove : list.size() = " + list.size()); } }
转载请注明原文地址: https://www.6miu.com/read-10058.html

最新回复(0)