java.util.List接口

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012326462/article/details/85015522

1 介绍

java.util.List 一个有序的集合,有序指的是插入顺序不会变。集合是允许重复的。提供了快速创建不可变集合的方法,不可变集合中的元素不能为空。下面介绍一些List接口有Collection接口没有的方法(基于jdk11源码)

Collection
List
AbstractList
ArrayList
Vector
LinkedList
SynchronizedList
AbstractImmutableList

2 方法

2.1 addAll

boolean addAll(int index, Collection<? extends E> c);

在index位置插入元素

2.2 replaceAll

   default void replaceAll(UnaryOperator<E> operator) {
        Objects.requireNonNull(operator);
        final ListIterator<E> li = this.listIterator();
        while (li.hasNext()) {
            li.set(operator.apply(li.next()));
        }
    }

对于集合中每个元素,都用函数式接口传过来的operator处理一下,然后取代原来元素,这是对所有元素进行同意处理的特别好的方法,jdk1.8加入的。

2.3 sort

    default void sort(Comparator<? super E> c) {
        Object[] a = this.toArray();
        Arrays.sort(a, (Comparator) c);
        ListIterator<E> i = this.listIterator();
        for (Object e : a) {
            i.next();
            i.set((E) e);
        }
    }

堆积和内元素进行排序,1.传入一个比较的函数式接口,2.把当前集合转成数组,3.进行排序, 4. 把排序后的元素一个一个赋值到原来集合中

2.4 get

E get(int index);

返回某个位置的元素

2.5 set

E set(int index, E element);

用指定的元素取代某个位置的元素

2.3 add

void add(int index, E element);

在某个位置插入一个元素

2.4 remove

E remove(int index);

移除某个位置的元素

2.5 indexOf

int indexOf(Object o);

返回第一个发现指定元素的职位,如果没找到则返回-1

2.6 lastIndexOf

int lastIndexOf(Object o);

返回指定元素最后一次出现的位置,否则返回-1

2.7 listIterator

ListIterator<E> listIterator();

返回一个list迭代器

2.8 subList

List<E> subList(int fromIndex, int toIndex);

返回在此区间的序列,左闭右开区间

2.9 of

    static <E> List<E> of(E... elements) {
        switch (elements.length) { // implicit null check of elements
            case 0:
                return ImmutableCollections.emptyList();
            case 1:
                return new ImmutableCollections.List12<>(elements[0]);
            case 2:
                return new ImmutableCollections.List12<>(elements[0], elements[1]);
            default:
                return new ImmutableCollections.ListN<>(elements);
        }
    }

返回不可变集合(jdk9)

2.10 copyOf

    static <E> List<E> copyOf(Collection<? extends E> coll) {
        return ImmutableCollections.listCopy(coll);
    }

根据输入的参数集合,返回一个不可变的集合(jdk10)

猜你喜欢

转载自blog.csdn.net/u012326462/article/details/85015522