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

本文探讨了Arrays.asList与com.google.common.collect.Lists.newArrayList两种创建列表的方法,并从效率角度进行了对比分析。结论显示,Arrays.asList在性能上更胜一筹,但其创建的列表不允许后续的元素修改。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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;
}

结论:第一个效率高一些,但是第一种无法再添加元素、或者修改元素
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值