zoukankan      html  css  js  c++  java
  • java

    情景

    现在有个数组,比如:String[]  array = new String[]{"1","2","3"};

    我们想要往这个数组中添加或删除元素。

    思路

    我们知道,数组是没有add,remote这些method的。

    所以我们需要将数组转换为list集合,list有这些功能啊,操作完之后,再将list转换为数组即可。没毛病!!

    操作

    public class test {
        public static void main(String[] args) {
            String[]  array = new String[]{"1","2","3"};
            List<String> list1 = Arrays.asList(array);
            // 我们想要的操作
            list1.add("4");
            list1.remove("1");
            // 操作结束后,再转为数组
            Object[] array2 = list1.toArray();
            for(Object a: array2) {
                System.out.println(a);
            }
            
        }
    }

    这段代码,看着没毛病。运行~~~

    在list1.add("4"); 这一步就报错了。不支持这个操作。同样,remove也不支持咯。

    原因

    Arrays.asList(String[])这种方式只能转为Arrays$ArrayList类,Arrays$ArrayList和ArrayList都是继承AbstractList,AbstractList类是不操作remove,add等method的,所以Arrays$ArrayList 也就不支持这些方法,默认throw UnsupportedOperationExceptiony异常。而ArrayList重写了remove,add等method,所以可以使用这些方法。

    修改

     1 public class test {
     2     public static void main(String[] args) {
     3         String[]  array = new String[]{"1","2","3"};
     4         List<String> list1 = Arrays.asList(array);
     5         List<String> list2 = new ArrayList<String>(list1);
     6         // 我们想要的操作
     7         list2.add("4");
     8         list2.remove("1");
     9         // 操作结束后,再转为数组
    10         Object[] array2 = list2.toArray();
    11         for(Object a: array2) {
    12             System.out.println(a);
    13         }
    14         
    15     }
    16 }

    我们需要将Arrays$ArrayList类转换为ArrayList类,再来进行操作。结束之后,转为数组。查看结果

     两个操作都成功了!

  • 相关阅读:
    欢庆入住博客园
    指定线程所运行的CPU核心
    [GNU/Linux MakeFile] 第一章:概述
    [.NET][编程之美][1.1]C# 实现让CPU占用率曲线听你的指挥 – 可指定运行核心
    vmware workstation 7.1 正式版 序列号 注册机
    linux:设置 linux定时运行命令脚本 (crontab详解)
    守护进程(Daemon)
    Linux下定时执行脚本
    二叉树的遍历(转)
    dup,dup2,fcntl,ioctl用法简述
  • 原文地址:https://www.cnblogs.com/fengyuduke/p/10496821.html
Copyright © 2011-2022 走看看