• 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类,再来进行操作。结束之后,转为数组。查看结果

     两个操作都成功了!

  • 相关阅读:
    工作之余
    用MFC如何高效地绘图
    C++运算符优先级
    CentOS5.9下用Kate
    3G门户网(3G.cn) 招聘 软件测试工程师
    深圳市东润信息咨询有限公司招聘职位: 3G无线产品经理
    广州杰赛科技股份有限公司 招聘 技术中心3G协议软件工程师
    3G门户网(3G.cn) 招聘 手机游戏开发工程师
    3G门户网(3G.cn) 招聘 技术支持工程师
    3G工程师:三大热门的3G职业资格培训认证
  • 原文地址:https://www.cnblogs.com/fengyuduke/p/10496821.html
Copyright © 2020-2023  润新知