[疯狂Java]集合:List、ListIterator

1. Java的List集合简介:

    1) List是一个抽象接口,其代表了一种有序(插入顺序)、可重复的集合,简单地来看完全可以当成一个可变长的数组;

    2) 它有不同的实现类:ArrayList/Vector(从名称上看就是用数组实现的)、LinkedList(很明显使用链表实现的);

    3) List的元素是可索引的,按照插入顺序,首元素索引是0(即从0开始计);

    4) 当然,List是Collection的派生,List当然可以使用Collection的全部方法(add、remove等);

    5) List虽然不要求元素不可重复,但是List还是需要判断元素是否相等的(比如查找、删除的时候肯定要先匹配到元素才行):List判断元素相等的依据就是元素的equals方法


2. List独有的根据索引来操作集合的方法:都是List的对象方法

    1) 根据索引添加元素:

         i. void add(int index, E element); // 添加到index处

         ii. boolean addAll(int index, Collection<? extends E> c); // 将c中的全部元素插入到index处

!!以上两个方法都是插入(不会覆盖index后的元素,而是从中间插入);

    2) 根据索引删除元素:E remove(int index);  // 返回被删除的元素

    3) 获取指定索引处的元素:E get(int index); // 不改变List

    4) 修改(更新)指定所引出的元素:E set(int index, E element); // 返回修改前的元素

    5) 定位元素:

         i. int indexOf(Object o); // 返回o第一次出现的索引

         ii. int lastIndexOf(Object o);  // 返回o最后一次出现的索引

    7) 根据索引区间截取子集:List<E> subList(int fromIndex, int toIndex);  // [fromIndex, toIndex)左闭右开

!!获取元素个数:int size();

  

3. List常用的两个默认方法:

    1) 自定定义算法重新设置List中的所有元素:default void replaceAll(UnaryOperator<E> operator);  // 根据UnaryOperator的一元算法修改每一个元素

!!迭代参数就是元素本身,例如:li.replaceAll(ele -> ele + 2);  // 每个元素变成自己+2

    2) 自定义比较方法对List排序:default void sort(Comparator<? super E> c);


4. ListIterator:

    1) List有自己专用的迭代器,即ListIterator,通过该方法获取:ListIterator<E> listIterator();

!!ListIterator派生自Iterator,因此Iterator的方法都能使用,但是ListIterator新增了很多适用于List的迭代功能,主要特点是支持向前迭代;

    2) ListIterator的特色方法(也是常用方法):

!!向前迭代:

         i. boolean hasPrevious();

         ii. E previous();

!在当前位置插入一个元素:void add(E e); // 即直接用迭代器往List中插入元素,而Iterator只能删除不能插入,ListIterator更进一步

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值