zoukankan      html  css  js  c++  java
  • 数组转List

    1、方式一:Arrays.asList(strArray)方法

         public static void main(String[] args) {
             String[] strArray = new String[2];
             List<String> list = Arrays.asList(strArray);
             list.add("AA");
             System.out.println(list);
         }
     Exception in thread "main" java.lang.UnsupportedOperationException
         at java.base/java.util.AbstractList.add(AbstractList.java:153)
         at java.base/java.util.AbstractList.add(AbstractList.java:111)
         at com.yefengyu.learn.Array2List.main(Array2List.java:11)

    通过 Arrays.asList(strArray) 方式,将数组转换List后,不能对List增删,只能查改,否则抛异常。

         public static void main(String[] args) {
             String[] strArray = new String[]{"1", "2"};
             List<String> list = Arrays.asList(strArray);
             list.set(0, "10");
             System.out.println(list);
         }
     [10, 2]
     ​
     Process finished with exit code 0

    2、方式二:使用ArrayList构造器方式

    通过ArrayList的构造器,将Arrays.asList(strArray)的返回值由java.util.Arrays.ArrayList转为java.util.ArrayList

         public static void main(String[] args) {
             String[] strArray = new String[]{"1", "2"};
             List<String> list = new ArrayList<>(Arrays.asList(strArray));
             list.add("AA");
             list.remove(0);
             System.out.println(list);
         }
     [2, AA]
     ​
     Process finished with exit code 0

    需要在将数组转换为List后,对List进行增删改查操作,在List的数据量不大的情况下,可以使用。

    3、方式三:Collections.addAll()方法

    通过Collections.addAll(arrayList, strArray)方式转换,根据数组的长度创建一个长度相同的List,然后通过Collections.addAll()方法,将数组中的元素转为二进制,然后添加到List中,这是最高效的方法。

         public static void main(String[] args) {
             String[] strArray = new String[]{"1", "2"};
             ArrayList< String> list = new ArrayList<>(strArray.length);
             Collections.addAll(list, strArray);
             list.add("AA");
             list.remove(0);
             System.out.println(list);
         }
     [2, AA]
     ​
     Process finished with exit code 0

    需要在将数组转换为List后,对List进行增删改查操作,在List的数据量巨大的情况下,优先使用,可以提高操作速度。

    Collections.addAll源码如下:

         public static <T> boolean addAll(Collection<? super T> c, T... elements) {
             boolean result = false;
             for (T element : elements)
                 result |= c.add(element);
             return result;
         }

    4、基本数据类型的数组

         int[] strArray = new int[]{1, 2};
         List<Integer> list = Arrays.asList(strArray);

    上面代码编译会报错!而下面的不会。

         Integer[] strArray = new Integer[]{1, 2};
         List<Integer> list = Arrays.asList(strArray);

    int[]不能直接转换为List< Integer >,而Integer[]就可以转换为List< Integer >了吧。因为List中的泛型必须是引用类型,int是基本数据类型,不是引用类型,但int的包装类型Integer是class类型,属于引用类型,所以Integer可以作为List形参,List< Integer >在java中是可以存在的,但不存在List< int >类型。

     

  • 相关阅读:
    【转载】C++针对ini配置文件读写大全
    CString向char类型转化 ---“=”: 无法从“wchar_t *”转换为“char *
    使用了非标准扩展:“xxx”使用 SEH,并且“xxx”有析构函数
    16进制串hex与ASCII字符串相互转换
    【转载】CCombobox使用大全
    获取c++ edit控件内容
    [转载]C++ CString与int 互转
    MacOS Cocos2d-x-3.2 创建HelloWorld项目
    构建之法阅读笔记6--敏捷开发2
    进度条--第十二周
  • 原文地址:https://www.cnblogs.com/ye-feng-yu/p/13375810.html
Copyright © 2011-2022 走看看