java数组--数组中删除指定某个值

1 Arrays.asList()

public static void main(String[] args) {
    String[] str={"11","22","33","44","55","66"};
    List<String> list=Arrays.asList(str);//将数组转换为list集合
    //*************************************
    //list.remove("11");
    //*************************************
    if(list.contains("22")){//加入集合中包含这个元素
        /*remove这些method时出现java.lang.UnsupportedOperationException异常。
         * 这是由于Arrays.asList() 返回java.util.Arrays$ArrayList,
         *  而不是ArrayList。Arrays$ArrayList和ArrayList都是继承AbstractList,
         *  remove,add等method在AbstractList中是默认throw UnsupportedOperationException而且不作任何操作。
         *  ArrayList override这些method来对list进行操作,
         *  但是Arrays$ArrayList没有override remove(),add()等,
         *  所以throw UnsupportedOperationException。
         */
        //这个时候我们直接移除会报错,所以我们要转换为Arraylist
        //list.remove("张三");
        List<String> arrayList=new ArrayList<String>(list);//转换为ArrayLsit调用相关的remove方法
        arrayList.remove("33");
        for(String str1:arrayList ){
            System.out.print(str1+",");
        }
    }
}

2遍历数组

public static void main(String[] args)
{
    int[] arr = {0,0,12,1,0,4,6,0};
    arr = clearZero(arr);
    System.out.println("数组的元素:"+Arrays.toString(arr));
}


public static  int[] clearZero(int[] arr){
    //统计0的个数
    int count = 0; //定义一个变量记录0的个数
    for(int i = 0 ; i<arr.length ; i++){
        if(arr[i]==0){
            count++;
        }
    }

    //创建一个新的数组
    int[] newArr = new int[arr.length-count];

    int index  =0 ; //新数组使用的索引值
    //把非的数据存储到新数组中。
    for(int i = 0; i<arr.length ; i++){
        if(arr[i]!=0){
            newArr[index] = arr[i];
            index++;
        }
    }
    return newArr;
}

3字符串桥接

public static void main(String[] args) {
    int a2[] = { 1, 0, 5,0,6,0,4, 1, 0 };
    System.out.println("原数组:");
    for (int n : a2)
        System.out.print(n + ",");
    // 删除元素!
    a2 = value(a2, 0);
    System.out.println("\n现数组:");
    for (int n : a2)
        System.out.print(n + ",");

}
private static int[] value(int[] arr, int key) {
    StringBuilder str=new StringBuilder();
    for (int i = 0; i < arr.length; i++)
        if(arr[i]!=key)
            str.append(arr[i]);
    char[] chs=new String(str).toCharArray();
    int[] orr=new int[chs.length];
    for (int i = 0; i < orr.length; i++) {
        orr[i]=chs[i]-'0';
    }
    return arr=orr;
}

4 浅复制

public static void main(String[] args) {
    int a1[]={1,3,4,5,0,0,9,6,0,5,4,7,6,7,0,5};
    //测试第一种办法:
    System.out.println("原数组:");
    for (int n : a1)
        System.out.print(n + ",");
    // 删除元素!
    a1=volume(a1,0);
    System.out.println("\n现数组:");
    for (int n : a1)
        System.out.print(n + ",");

}
private static int[] volume(int[] arr, int key) {
    int count = 0;
    for (int i = 0, j = arr.length - 1; i <= j; i++, j--) {
        if (arr[i] == key && i != j)
            count++;
        if (arr[j] == key && i != j)
            count++;
        if (arr[i] == key && i == j)
            count++;
    }
    //上面就是计算0的个数
    int nrr[] = new int[arr.length - count];
    count = 0;
    for (int i = 0; i < arr.length; i++) {
        if (arr[i] == key)
            continue;
        else
            nrr[count++] = arr[i];
    }
    return arr = nrr;
}

要在Java删除某个数组中指定的对象,可以使用Iterator的方式进行操作。首先,获取数组的迭代器,然后使用迭代器的remove方法来删除满足条件的对象。例如,假设我们有一个名为students的List<Student>数组,我们想要删除id为偶数的学生对象,可以按照以下方式进行操作: ```java List<Student> students = this.getStudents(); Iterator<Student> stuIter = students.iterator(); while (stuIter.hasNext()) { Student student = stuIter.next(); if (student.getId() % 2 == 0) { stuIter.remove(); } } ``` 这样,数组中所有id为偶数的学生对象都会被删除。请注意,如果使用List的remove方法来删除对象,会导致ConcurrentModificationException异常的出现。因此,使用Iterator的remove方法是更安全和可靠的方式。\[1\] #### 引用[.reference_title] - *1* [Java删除某个数组中指定的对象](https://blog.csdn.net/mll999888/article/details/72742197)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [删除数组中指定元素或数组对象](https://blog.csdn.net/fanghe1995/article/details/125323180)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [java数组中删除元素或一个数组元素](https://blog.csdn.net/m0_61466807/article/details/126157280)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

haikuotiankongdong

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值