官方文档:https://google.github.io/guava/releases/27.0.1-jre/api/docs/com/google/common/collect/Lists.html

在Lists类中支持构造 ArrayList、LinkedList 以及 newCopyOnWriteArrayList 对象的方法。

■ 使用实例

package com.example.guava.collect;

import com.google.common.base.Function;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Lists;
import org.checkerframework.checker.nullness.qual.Nullable;
import org.junit.Test;

import java.util.List;

public class ListsTest {

    public void test1(){
        List<String> list1 = Lists.newArrayList();
        for (int i = 0; i < 10; i++) {
            list1.add(i + "");
        }
        System.out.println("list1: " + list1);
        //输出:list1: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

        //2、传入多参数
        List<String> list2 = Lists.newArrayList("1", "2", "3");
        System.out.println("list2: " + list2);
        //输出:list2: [1, 2, 3]

        //3、传入数组
        List<String> list3 = Lists.newArrayList(new String[]{"22", "22"});
        System.out.println("list3: " + list3);
        //输出:list3: [22, 22]

        //4、传入集合
        List<String> list4 = Lists.newArrayList(list1);
        System.out.println("list4: " + list4);
        //输出:list4: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

        //5、使用条件:你确定你的容器会装多少个,不确定就用一般形式的
        //说明:这个容器超过10个还是会自动扩容的。不用担心容量不够用。默认是分配一个容量为10的数组,不够将扩容
        //整个来说的优点有:节约内存,节约时间,节约性能。代码质量提高。
        List<String> list = Lists.newArrayListWithExpectedSize(10);

        //这个方法就是直接返回一个10的数组。
        List<String> list_ = Lists.newArrayListWithCapacity(10);
    }

    @Test
    public void testLists() {
        String str = "i love u";
        String[] strs = {"i like u", "i miss u"};

        List<String> list = Lists.asList(str, strs);
        System.out.println(list);   // [i love u, i like u, i miss u]

        strs[1] = "i hate u";
        System.out.println(list);   // [i love u, i like u, i hate u]

        /**
         * transform:根据传进来的function对fromList进行相应的处理
         * 并将处理得到的结果存入到新的list对象中返回
         */
        List<Object> transformList = Lists.transform(list, new Function<String, Object>() {
            @Override
            public Object apply(@Nullable String input) {
                return input.toUpperCase();
            }
        });
        System.out.println(transformList);      //[I LOVE U, I LIKE U, I HATE U]

        /**
         * partition:根据size传入的List进行切割,切割成符合要求的小的List
         * 并将这些小的List存入一个新的List对象中返回
         */
        List<List<String>> lists = Lists.partition(list, 2);
        System.out.println(lists);      // [[i love u, i like u], [i hate u]]

        /**
         * charactersOf:将传进来的String或者CharSequence分割为单个的字符
         * 并存入到一个ImmutableList对象中返回
         * ImmutableList:一个高性能、不可变的、随机访问列表的实现
         */
        ImmutableList<Character> characters = Lists.charactersOf("tingfeng");
        System.out.println(characters);     // [t, i, n, g, f, e, n, g]

        /**
         * reverse:返回一个传入List内元素倒序后的List
         */
        List<String> reverse = Lists.reverse(list);
        System.out.println(reverse);    // [i hate u, i like u, i love u]
    }

}