在Java中的数组和列表之间的转换

评论 0 浏览 0 2014-05-31

1.概述

在这个快速教程中,我们将学习如何使用Java核心库、Guava和Apache Commons Collections在数组和列表之间进行转换

这篇文章是"Java - Back to Basic "系列的一部分。

2.将List转换为数组

2.1.使用普通的Java

让我们从List到数组的转换开始吧使用普通的Java

@Test
public void givenUsingCoreJava_whenListConvertedToArray_thenCorrect() {
    List<Integer> sourceList = Arrays.asList(0, 1, 2, 3, 4, 5);
    Integer[] targetArray = sourceList.toArray(new Integer[0]);
}

注意,我们使用该方法的首选方式是toArray(new T[0])toArray(new T[size])。正如Aleksey Shipilëv在他的博客文章中所证明的那样,这似乎更快、更安全、更干净。

2.2.使用Guava

现在让我们使用Guava API来进行同样的转换。

@Test
public void givenUsingGuava_whenListConvertedToArray_thenCorrect() {
    List<Integer> sourceList = Lists.newArrayList(0, 1, 2, 3, 4, 5);
    int[] targetArray = Ints.toArray(sourceList);
}

3.将数组转换为List

3.1.使用普通的Java

让我们从将数组转换为List的普通Java解决方案开始吧。

@Test
public void givenUsingCoreJava_whenArrayConvertedToList_thenCorrect() {
    Integer[] sourceArray = { 0, 1, 2, 3, 4, 5 };
    List<Integer> targetList = Arrays.asList(sourceArray);
}

注意,这是一个固定大小的列表,它仍然会被数组所支持。如果我们想要一个标准的ArrayList,我们可以简单的实例化一个。

List<Integer> targetList = new ArrayList<Integer>(Arrays.asList(sourceArray));

3.2.使用Guava

现在让我们使用Guava API来进行同样的转换。

@Test
public void givenUsingGuava_whenArrayConvertedToList_thenCorrect() {
    Integer[] sourceArray = { 0, 1, 2, 3, 4, 5 };
    List<Integer> targetList = Lists.newArrayList(sourceArray);
}

3.3.使用Apache Commons Collections

最后,让我们使用Apache Commons Collections CollectionUtils.addAll API,将数组中的元素填入空的List中。

@Test 
public void givenUsingCommonsCollections_whenArrayConvertedToList_thenCorrect() { 
    Integer[] sourceArray = { 0, 1, 2, 3, 4, 5 }; 
    List<Integer> targetList = new ArrayList<>(6); 
    CollectionUtils.addAll(targetList, sourceArray); 
}

4.总结

所有这些例子和代码片段的实现可以在GitHub上找到。这是一个基于Maven的项目,所以应该很容易导入并按原样运行。

最后更新2023-03-07
0 个评论