如何删除集合(数组)中指定的元素

如何删除集合(数组)中指定的元素##

1.首先删除数组中的元素,没有特定的api

由于没有特定的快捷删除的api,所以就自己来实现,最后封装成工具方法
实现思路:
          1.用最后一个索引位置的元素来替代想要删除的索引位置的元素
          2.把原数组进行缩容

代码:

 		int[] arr = new int[]{1,2,4,5,9,8,0};
        System.out.println(Arrays.toString(arr) +"--------77777");
        //替换
        arr[2]=arr[arr.length-1];
        
        //缩容
        int[] arr1 = Arrays.copyOf(arr, arr.length - 1);
        System.out.println(Arrays.toString(arr1) +"??????????");
 

打印结果:

[1, 2, 4, 5, 9, 8, 0]--------77777
[1, 2, 0, 5, 9, 8]??????????

这就完成了数组的删除元素,如果有排序要求,调用排序方法即可

2. list集合删除元素

list集合有自带的删除索引位置元素的方法remove(int index);这为我们删除集合元素提供了很大方便,

但是注意:
如果用数组的List list = Arrays.asList(arr); 这个返回的list就不能使用remove方法,否则会报
java.lang.UnsupportedOperationException不支持的操作异常
原因:
首先我们看Arrays.asList(arr)的源码

   public static <T> List<T> asList(T... a) {
        return new ArrayList<>(a);
    }

接着点进返回的new ArrayList<>(a);

   		private final E[] a;

        ArrayList(E[] array) {
            a = Objects.requireNonNull(array);
        }

可以看到:这个a是final修饰的常量,常量不能做修改操作,remove时会报异常
所以使用Arrays.asList(arr)转化的集合不能使用remove()
但使用new的list,list.add添加元素的可以使用remove()删除指定元素。

那么怎么做list的删除呢?有以下三种方法

1.使用集合的迭代器iterator
代码:

     Iterator iterator = list.iterator();
        while (iterator.hasNext()){
            Object next = iterator.next();
            if (next.equals("5")){   //遍历集合元素,当元素等于某个值时,进行删除
                iterator.remove();
            }
        }

2.使用for循环

    for (int i = 0 ;i <list.size();i++){
           if (list.get(i).equals("4")){    //遍历集合元素等于某个值,删除这个元素
               list.remove(i);
           }
      }

3.使用removeIf()

   list.removeIf(l->l.equals("1"));  //如果元素等于1 就删除!

邮箱1149513559@qq.com

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值