List 根据条件删除元素(removeIf)

 从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**
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值