数组到列表或列表到数组,转换速度快?

时间:2018-03-07 09:37:05

标签: java arrays list casting type-conversion

在java中,基本上这两个转换是如此常见和流行......

  • 要列出的数组

    List<String> list = Arrays.asList(array);

  • 列表到数组

    String[] array = list.toArray(new String[list.size()]);

所以问题是,哪个更快,Array to List还是反向?

现在,我为什么要问这个问题?因为我要实现一个数组或列表的方法,两者都可以在参数中传递。我只需要迭代这个列表即可。所以在这里我必须决定我应该转换什么?数组列表或列表到数组!

3 个答案:

答案 0 :(得分:11)

Arrays.asList更快,因为它不复制数据 - 它返回一个包装传递给它的数组的对象,并实现List接口。 Collection.toArray()将数据复制到数组,因此它以O(N)而不是O(1)运行。

答案 1 :(得分:1)

Arrays.asList会更快,因为它不必复制任何数据,而只需要打包它。

答案 2 :(得分:0)

恕我直言,你正在处理错误的一面。要问的一个好问题是你的方法中是否需要数组或List。顺便说一下,List它只是一个接口,并且可能存在许多实现。例如,JDK直接提供由数组支持的ArrayList,因此转换为数组应该很快,而LinkedList是一个双向链接实现,还有许多其他包括旨在帮助定制的抽象类的实施方式。

简而言之,知道如何使用方法中的元素,因此只需使用更合适的容器

在我看来,如果你打算迭代元素,使用List,如果你需要密集的随机访问并且可以接收链表实现,那么使用数组。