用Java将数组转换为ArrayList

时间:2020-01-09 10:35:02  来源:igfitidea点击:

在如何在Java中将ArrayList转换为Array的文章中,我们已经看到了进行该转换的不同方法。这篇文章是关于如何在Java中将数组转换为ArrayList的另一种方式。

在Java中将数组转换为ArrayList的选项

  • 使用Arrays.asList()方法。参见示例。
  • 使用Collections.addAll()方法。参见示例。
  • 从Java 8开始,我们可以使用Java Stream API在Java中将数组转换为ArrayList。参见示例。
  • 手动执行操作而不使用任何API方法。参见示例。

使用Arrays.asList()方法

使用Arrays.asList()方法可以将数组转换为ArrayList。此方法返回的列表由数组支持,因此List中的任何更改也将反映在数组中。

import java.util.Arrays;
import java.util.List;

public class ArrayToList {
  public static void main(String[] args) {
    String[] carArray = {"Audi", "Jaguar", "BMW", "Mini Cooper"};
    // Converting array to arraylist
    List<String> carList = Arrays.asList(carArray);
    System.out.println("List Elements- " + carList);
    // changing element in List
    carList.set(1, "Mercedes");
    System.out.println("Array Elements- " + Arrays.toString(carArray));
  }
}

输出:

List Elements- [Audi, Jaguar, BMW, Mini Cooper]
Array Elements- [Audi, Mercedes, BMW, Mini Cooper]

从输出中可以看到,当ArrayList中索引1的元素发生更改时,更改也将反映到数组中。

这种方法的另一个缺点是返回列表是固定的,我们不能在返回的列表中添加或者删除元素。任何添加或者删除元素的尝试都会抛出java.lang.UnsupportedOperationException。

import java.util.Arrays;
import java.util.List;

public class ArrayToList {
  public static void main(String[] args) {
    String[] carArray = {"Audi", "Jaguar", "BMW", "Mini Cooper"};
    // Converting array to arraylist
    List<String> carList = Arrays.asList(carArray);
    System.out.println("List Elements- " + carList);
    // trying to remove element
    carList.remove("Audi");
    System.out.println("Array Elements- " + Arrays.toString(carArray));
  }
}

输出:

List Elements- [Audi, Jaguar, BMW, Mini Cooper]
Exception in thread "main" java.lang.UnsupportedOperationException: remove
	at java.base/java.util.Iterator.remove(Iterator.java:102)
	at java.base/java.util.AbstractCollection.remove(AbstractCollection.java:299)
	at com.theitroad.ArrayToList.main(ArrayToList.java:14)

如果需要通过将数组转换为ArrayList来修改列表,则应使用返回的列表创建一个新的ArrayList。

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

public class ArrayToList {
  public static void main(String[] args) {
    String[] carArray = {"Audi", "Jaguar", "BMW", "Mini Cooper"};
    // Converting array to arraylist
    List<String> carList = new ArrayList<String>(Arrays.asList(carArray));
    System.out.println("List Elements- " + carList);
    // changing element in List
    carList.remove("Audi");
    System.out.println("Array Elements- " + Arrays.toString(carArray));
    System.out.println("List Elements- " + carList);
  }
}

输出:

List Elements- [Audi, Jaguar, BMW, Mini Cooper]
Array Elements- [Audi, Jaguar, BMW, Mini Cooper]
List Elements- [Jaguar, BMW, Mini Cooper]

如通过创建新的ArrayList从输出中看到的那样,我们可以在结构上对其进行修改,现在更改也不会反映到数组中。

使用Collections.addAll()方法

我们还可以使用Collections.addAll()方法将数组转换为Java中的ArrayList。我们需要将List和array作为参数传递给此方法。

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

public class ArrayToList {
  public static void main(String[] args) {
    String[] carArray = {"Audi", "Jaguar", "BMW", "Mini Cooper"};
    List<String> carList = new ArrayList<String>();
    Collections.addAll(carList, carArray);
    System.out.println("List Elements- " + carList);
  }
}

输出:

List Elements- [Audi, Jaguar, BMW, Mini Cooper]

Java Stream API的collect()方法

从Java 8开始,我们还可以在Java Stream API中使用收集器将数组转换为Java中的ArrayList。

import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class ArrayToList {
  public static void main(String[] args) {
    String[] carArray = {"Audi", "Jaguar", "BMW", "Mini Cooper"};
    List<String> carList = Stream.of(carArray).collect(Collectors.toList());
    System.out.println("List Elements- " + carList);
  }
}

输出:

List Elements- [Audi, Jaguar, BMW, Mini Cooper]

不使用任何API方法

我们也可以通过编写自己的逻辑而不是使用任何API方法来将数组转换为ArrayList。它仅需要一个简单的for循环,我们需要在其中将数组的迭代元素添加到ArrayList中。

import java.util.ArrayList;
import java.util.List;

public class ArrayToList {
  public static void main(String[] args) {
    String[] carArray = {"Audi", "Jaguar", "BMW", "Mini Cooper"};
    List<String> carList = new ArrayList<String>();
    for(String car : carArray) {
      carList.add(car);
    }
    System.out.println("List Elements- " + carList);
  }
}

输出:

List Elements- [Audi, Jaguar, BMW, Mini Cooper]