您的位置:首页 > 编程语言 > Java开发

java Arrays.asList com.google.common.collect.Lists.newArrayList 效率问题

2017-08-24 17:09 681 查看
Arrays.asList(new int[]{goodsId});
Lists.newArrayList(goodsId):com.google.common.collect.Lists
请问这两个哪个效率高一些

理论上应该是:asList效率高,
因为:
Arrays.asList:
第一步:
public static <T> List<T> asList(T... a) {
return new ArrayList<>(a);
}
第二步:
ArrayList(E[] array) {
if (array==null)
throw new NullPointerException();
a = array;//此处直接复制地址,耗时几乎为0
}

com.google.common.collect.Lists.newArrayList:
第一步:
public static <E> ArrayList<E> newArrayList(E... elements) {
Preconditions.checkNotNull(elements);
int capacity = computeArrayListCapacity(elements.length);
ArrayList<E> list = new ArrayList(capacity);
Collections.addAll(list, elements);//此处需要添加元素
return list;
}
第二步:
public static <T>boolean addAll(Collection<?
super
T> c, T... elements) {
boolean result =
false;
for (T element : elements)//走for循环了,按理讲应该是耗时间的
result |= c.add(element);
return result;
}

结论:第一个效率高一些,但是第一种无法再添加元素、或者修改元素
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息