Guava源码阅读——Collect包.Lists类

本文详细探讨了Guava库中Collect包的Lists类,包括创建ArrayList、LinkedList、CopyOnWriteArrayList的方法,自制List规则,List笛卡尔乘积转换,分批输出和逆序操作等功能。通过源码分析,揭示了这些方法的实现原理和优化细节,如内存优化、性能提升及对数据结构的特殊处理。

功能函数

创建ArrayList方法

newArrayList()

newArrayList(E... elements)

newArrayList(Iterable<? extends E> elements)

newArrayList(Iterator<? extends E> elements)

newArrayListWithCapacity(int initialArraySize)

newArrayListWithExpectedSize(int estimatedSize)

创建LinkedList方法

newLinkedList()

newLinkedList(Iterable<? extends E> elements)

创建CopyOnWriteArrayList方法

newCopyOnWriteArrayList()

newCopyOnWriteArrayList(Iterable<? extends E> elements)

创建自制List规则

asList(@Nullable E first, E[] rest)

asList(@Nullable E first, @Nullable E second, E[] rest)

对多个List做笛卡尔乘积

cartesianProduct(List<? extends List<? extends B>> lists)

cartesianProduct(List<? extends B>... lists)

从一个类型的List转到另一个类型的List方法

transform(List<F> fromList, Function<? super F, ? extends T> function)

对list进行分批输出的方法(作用之一:分页) partition(List<T> list, int size)
将字符串作为字符数组进行操作

charactersOf(String string)

charactersOf(CharSequence sequence)

将list逆序 reverse(List<T> list)

PS:今天终于找到了插入代码块的地方哈哈哈哈

     

        创建ArrayList方法

 

1、无参创建ArrayList

public static <E> ArrayList<E> newArrayList() {
 return new ArrayList();
}

2、传入一个数组,返回一个ArrayList

public static <E> ArrayList<E> newArrayList(E... elements) {
 //对数组进行判空处理
 Preconditions.checkNotNull(elements);
 // computeArrayListCapacity对当前数量进行优化
 int capacity = computeArrayListCapacity(elements.length);
 //这里根据优化后的数量进行创建一个新的ArrayList
 ArrayList list = new ArrayList(capacity);
 //将数组里面的元素都存储在List中
 Collections.addAll(list, elements);
 return list;
}

有上面,我们可以解析一下computeArrayListCapacity方法:

static int computeArrayListCapacity(int arraySize) {
 //判断是否小于0,小于0则抛出异常
 Collec
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值