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

     两个操作都成功了!

  • 相关阅读:
    将才和帅才之的区别
    百胜集团XX:BPM实现业务流程全过程无缝链接(案例)
    心、肝、脾、肺、肾五脏解说+ 五脏六腑的作用
    人体的五行属性
    易经卦的通例
    《孙子兵法》中的企业领导艺术和方法
    五行盘谱
    大容量高并发性服务器组的技术解析
    中华哲学的领导艺术
    如何在WINDOW环境下搭建ActivateMQ和zookeeper集群环境
  • 原文地址:https://www.cnblogs.com/fengyuduke/p/10496821.html
Copyright © 2011-2022 走看看