在java中,基本上这两个转换是如此常见和流行......
要列出的数组
List<String> list = Arrays.asList(array);
列表到数组
String[] array = list.toArray(new String[list.size()]);
所以问题是,哪个更快,Array to List还是反向?
现在,我为什么要问这个问题?因为我要实现一个数组或列表的方法,两者都可以在参数中传递。我只需要迭代这个列表即可。所以在这里我必须决定我应该转换什么?数组列表或列表到数组!
答案 0 :(得分:11)
Arrays.asList
更快,因为它不复制数据 - 它返回一个包装传递给它的数组的对象,并实现List
接口。 Collection.toArray()
将数据复制到数组,因此它以O(N)而不是O(1)运行。
答案 1 :(得分:1)
Arrays.asList会更快,因为它不必复制任何数据,而只需要打包它。
答案 2 :(得分:0)
List
它只是一个接口,并且可能存在许多实现。例如,JDK直接提供由数组支持的ArrayList
,因此转换为数组应该很快,而LinkedList
是一个双向链接实现,还有许多其他包括旨在帮助定制的抽象类的实施方式。
简而言之,你知道如何使用方法中的元素,因此只需使用更合适的容器。
在我看来,如果你打算迭代元素,使用List
,如果你需要密集的随机访问并且可以接收链表实现,那么使用数组。