前言
List list1 = Lists.newArrayList();
List list2 =new ArrayList<>();
这两个哪个效率高,在高并发100万请求的情况下
代码实现
在高并发的情况下,List list2 =new ArrayList<>(); 这个效率会高一些。
原因是:
- Lists.newArrayList() 每次都会新建一个ArrayList实例,而new ArrayList<>() 只会在第一次用到的时候实例化,后续都会重用该实例,所以性能更好。
- Lists.newArrayList() 使用了Guava的ImmutableList,而ArrayList是mutable的,mutable的集合在高并发情况下性能更好,因为不需要复制操作。
- ArrayList是JDK原生的集合,性能一般会优于第三方库。
所以总的来说,在高并发场景下,使用JDK原生的ArrayList,而不是Guava的ImmutableList,可以获得更好的性能。
新建实例的方式使用new ArrayList<>() 而不是 Lists.newArrayList() ,可以提高实例重用的机会,获得更好的性能。
测试数据也证明了这个结论:
@Test
public void testConcurrentArrayList(