从List 中删除元素,我看之前人的说是在便利的过程中不能删除元素我今天验证了一下,其实是可以的,而且把java8 中的removeIf 也用上。
其实之所以他们会报错主要是:
Integer [] str ={1,3,2,4,5,6,2};
List<Integer> integers = Arrays.asList(str); 注意这样转换为List 并不是ArrayList 的,所以remove报 java.lang.UnsupportedOperationException的错,可以利用addAll() 先转为ArrayList 的实例。
具体原因参考:
https://blog.csdn.net/lcdaaaa/article/details/80240030
例子:
Integer [] str ={1,3,2,4,5,6,2};
List<Integer> integers = Arrays.asList(str);
List<Integer> list =new ArrayList<>();
list.addAll(integers);
第一种:迭代器
Integer [] str ={1,3,2,4,5,6,2};
List<Integer> integers = Arrays.asList(str);
List<Integer> list =new ArrayList<>();
list.addAll(integers);
Iterator<Integer> iterator = list.iterator();
while (iterator.hasNext()){
Integer next = iterator.next();
if(next==1 || next==3 || next==2){
iterator.remove();
}
}
//这输出list 就行别写iterator
System.out.println(list);
第二种:java8 removeIf
Integer [] str ={1,3,2,4,5,6,2};
List<Integer> integers = Arrays.asList(str);
List<Integer> list =new ArrayList<>();
list.addAll(integers);
list.removeIf(a->a==2 || a==1);
System.out.println(list);
**注意不要在for循坏中remove**