zoukankan      html  css  js  c++  java
  • java 数组转list asList用法

    https://www.cnblogs.com/zheyangsan/p/6910476.html

    java中数组转list使用Arrays.asList(T... a)方法。
    
    示例:
    
    public class App {
      public static void main(String[] args) {
        List<String> stringA = Arrays.asList("hello", "world","A");
        String[] stringArray = {"hello","world","B"};
        List<String> stringB = Arrays.asList(stringArray);
     
        System.out.println(stringA);
        System.out.println(stringB);
      }
    }
     运行结果:
    1
    2
    [hello, world, A]
    [hello, world, B]
     这个方法使用起来非常方便,简单易懂。但是需要注意以下两点。
    
    一、不能把基本数据类型转化为列表
    
    仔细观察可以发现asList接受的参数是一个泛型的变长参数,而基本数据类型是无法泛型化的,如下所示:
    public class App {
      public static void main(String[] args) {
        int[] intarray = {1, 2, 3, 4, 5};
        //List<Integer> list = Arrays.asList(intarray); 编译通不过
        List<int[]> list = Arrays.asList(intarray);
        System.out.println(list);
      }
    }
     
    output:
    [[I@66d3c617]
    这是因为把int类型的数组当参数了,所以转换后的列表就只包含一个int[]元素。
    
    解决方案:
    
      要想把基本数据类型的数组转化为其包装类型的list,可以使用guava类库的工具方法,示例如下:
    int[] intArray = {1, 2, 3, 4};
    List<Integer> list = Ints.asList(intArray);
     
    
     二、asList方法返回的是数组的一个视图
    
    视图意味着,对这个list的操作都会反映在原数组上,而且这个list是定长的,不支持add、remove等改变长度的方法。
    public class App {
      public static void main(String[] args) {
        int[] intArray = {1, 2, 3, 4};
        List<Integer> list = Ints.asList(intArray);
        list.set(0, 100);
        System.out.println(Arrays.toString(intArray));
        list.add(5);
        list.remove(0);
     
      }
    }
     output:
    [100, 2, 3, 4]
    UnsupportedOperationException
    UnsupportedOperationException
    

      

    java中数组转list使用Arrays.asList(T... a)方法。

    示例:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public class App {
      public static void main(String[] args) {
        List<String> stringA = Arrays.asList("hello""world","A");
        String[] stringArray = {"hello","world","B"};
        List<String> stringB = Arrays.asList(stringArray);
     
        System.out.println(stringA);
        System.out.println(stringB);
      }
    }

     运行结果:

    1
    2
    [hello, world, A]
    [hello, world, B]

     这个方法使用起来非常方便,简单易懂。但是需要注意以下两点。

    一、不能把基本数据类型转化为列表

    仔细观察可以发现asList接受的参数是一个泛型的变长参数,而基本数据类型是无法泛型化的,如下所示:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public class App {
      public static void main(String[] args) {
        int[] intarray = {12345};
        //List<Integer> list = Arrays.asList(intarray); 编译通不过
        List<int[]> list = Arrays.asList(intarray);
        System.out.println(list);
      }
    }
     
    output:
    [[I@66d3c617]

    这是因为把int类型的数组当参数了,所以转换后的列表就只包含一个int[]元素。

    解决方案:

      要想把基本数据类型的数组转化为其包装类型的list,可以使用guava类库的工具方法,示例如下:

    1
    2
    int[] intArray = {1234};
    List<Integer> list = Ints.asList(intArray);

     

     二、asList方法返回的是数组的一个视图

    视图意味着,对这个list的操作都会反映在原数组上,而且这个list是定长的,不支持add、remove等改变长度的方法。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public class App {
      public static void main(String[] args) {
        int[] intArray = {1234};
        List<Integer> list = Ints.asList(intArray);
        list.set(0100);
        System.out.println(Arrays.toString(intArray));
        list.add(5);
        list.remove(0);
     
      }
    }

     output:

    1
    2
    3
    [100234]
    UnsupportedOperationException
    UnsupportedOperationException
  • 相关阅读:
    高级(线性)素数筛
    Dijkstra(迪杰斯特拉)算法
    简单素数筛
    【解题报告】 POJ1958 奇怪的汉诺塔(Strange Tower of Hanoi)
    4 jQuery Chatting Plugins | jQuery UI Chatbox Plugin Examples Like Facebook, Gmail
    Web User Control Collection data is not storing
    How to turn on IE9 Compatibility View programmatically in Javascript
    从Javascrip 脚本中执行.exe 文件
    HtmlEditorExtender Ajax
    GRIDVIEW模板中查找控件的方式JAVASCRIPT
  • 原文地址:https://www.cnblogs.com/Andrew520/p/10898563.html
Copyright © 2011-2022 走看看