Java数组到列表(ArrayList)的转换

时间:2020-02-23 14:36:21  来源:igfitidea点击:

有时我们需要在Java中将Array转换为List,在这里我们将学习两种不同的方法来实现这一点。
由于List是接口,而ArrayList是最受欢迎的实现,因此它与将Array转换为ArrayList相同。
当您调用某些第三方类返回一个数组,然后需要将它们更改为列表,或者向列表中添加更多数据时,就会出现这种情况。

列出的Java数组

在Java中,有两种内置方法可以将Array转换为List。

  • Arrays.asList(T…a):这是在Java中将Array转换为ArrayList的最简单方法,但是此方法以ArrayList的形式返回数组的基础表示形式。
    返回的ArrayList是固定大小的,任何修改尝试都会在运行时导致UnsupportedOperationException。
    同样,数组中的任何更改也将更改ArrayList中的元素。

  • Collections.addAll(ArrayList <T> strList,T [] strArr):这是将数组转换为ArrayList的最佳方法,因为数组数据已复制到列表,并且两者都是独立的对象。
    复制数组后,您可以独立修改两个对象。
    集合是Java Collections Framework中非常有用的类,它提供了许多实用程序方法。

现在,让我们看看这两种方法的实际作用。

package com.theitroad.util;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

public class ArrayToArrayList {

  /**
   * This class shows different methods to convert Array to ArrayList
   * 
   * @param args
   */
  public static void main(String[] args) {
      String[] strArr = {"1", "2", "3", "4"};
      List<String> strList = new ArrayList<String>();
      //return the list representation of array
      //any change in array elements will change the arrayList elements also
      strList = Arrays.asList(strArr);
      System.out.println("Original ArrayList from Arrays.asList()");
      for (String str : strList)
          System.out.print(" " + str);
      //change the array element and see the effect is propogated to list also.
      strArr[0] = "5";
      System.out.println("\nChange in array effect on ArrayList");
      for (String str : strList)
          System.out.print(" " + str);
      //below code will throw java.lang.UnsupportedOperationException because
      //Arrays.asList() returns a fixed-size list backed by the specified array.
      //strList.add("5");

      strList = new ArrayList<String>();

      Collections.addAll(strList, strArr);
      //change both the array and arraylist and check if they are independent?
      strList.add("5");
      strArr[0] = "1";
      System.out.println("\nArray to ArrayList using Collections.addAll()");
      for (String str : strList)
          System.out.print(" " + str);

  }

}

上面程序的输出是:

Original ArrayList from Arrays.asList()
 1 2 3 4
Change in array effect on ArrayList
 5 2 3 4
Array to ArrayList using Collections.addAll()
 5 2 3 4 5