zoukankan      html  css  js  c++  java
  • Java

    一、数组转集合

      注意:数组只能转化为List集合,因为Set不能存放重复元素,若转化为Set,可能出现元素丢失的情况

    1. 方法一:遍历数组,将数组元素添加到List集合中
      1 Integer[] array = {1,2,3,4,5};
      2 List<Integer> list =new ArrayList<>();
      3 for (int i=0;i<array.length;i++){
      4      list.add(i,array[i]);
      5 }

      也可以使用foreach循环

      1 Integer[] array = {1,2,3,4,5};
      2 List<Integer> list =new ArrayList<>();
      3 for (Integer element:array) {
      4     list.add(element);
      5 }
    2. 方法二:使用数组工具类的asList()方法
      Integer[] array = {1,2,3,4,5};
      List<Integer> list =Arrays.asList(array);

      注意:

      • 该方法不适用于基本数据类型(byte,short,int,long,float,double,boolean)
      • 此种方法转化而来的List集合不支持add和remove方法,会报错,
        • 原因是:这个新集合是由数组转换过来的,那么该集合就表示原来的数组,所以对集合的操作就是对数组的操作。那么添加元素会导致原数组扩容,那么就不能表示原来的数组了。所以不允许向该集合添加新元素了
      • 若对List集合做更新操作,原数组元素也会随之改变,即该方法将数组与列表链接起来,当更新其中之一时,另一个自动更新
      • 解决办法:
        • ①:创建一个空集合,将数组转化后的集合用addall()方法全部添加到这个空集合中
           Integer[] array = {1,2,3,4,5};
           List<Integer> list =Arrays.asList(array);
           List<Integer> list_new = new ArrayList<>();
           list_new.addAll(list);
           list_new.set(0,500);
           System.out.println(list_new.get (0));
           System.out.println(array[0]);
        • ②:推荐写法
           Integer[] array = {1,2,3,4,5};
           List<Integer> list =Arrays.asList(array);
           List<Integer> list_new = new ArrayList<>(list);  
    3. 方法三:使用Collections.addall()方法
      Integer[] array = {1,2,3,4,5};
      List<Integer> list_new =new ArrayList<>();
      Collections.addAll(list_new,array);
    4. 方法四:使用java9的新方法List.of()
      # 此方法为 Java9新增方法,定义在List接口内,并且为静态方法,故可以由类名直接调用
      List<String> resultList = List.of(array);

    二、集合转数组

    1. 方法一:遍历
    2. 方法二:使用集合的toArray()方法
         List<Integer> list =new ArrayList<>();
         list.add(3);
         list.add(4);
         list.add(5);
         list.add(2);
      
         Integer[] array = new Integer[list.size()];
         list.toArray(array);
         System.out.println(Arrays.toString(array));
  • 相关阅读:
    能登陆QQ ping通外网 但打不开网页
    代码大全书写子程序要注意的几个问题?
    代码大全创建子程序的正当理由
    原创 插入排序算法
    堆结构的实现
    代码大全子程序层上的设计
    五十。java
    四十七。java
    四十九。java
    五十二。java
  • 原文地址:https://www.cnblogs.com/mysummary/p/12463549.html
Copyright © 2011-2022 走看看