• List接口



    概述

    有序的 collection(也称为序列)。此接口的用户可以对列表中每个元素的插入位置进行精确地控制。用户可以根据元素的整数索引(在列表中的位置)访问元素,并搜索列表中的元素。

    Collection将集合划分为两大类:

    1. List集合
    2. Set集合

    List接口的特点

    1. 有序【存储有序】

    2. 可重复

    3. 可以存储 null

    4. 部分子集合线程安全,部分不安全 例如 ArrayListVector

    5. 有索引,针对每个元素能够方便地查询和修改

    6. 判断元素是否重复依赖于equals方法

      a. 如果元素是系统类,不需要重写equals方法

      b. 如果是自定义类,就需要我们按需求重写 equals方法


    List接口的常用方法

    增加

    void add(int index, E element) 
    //在指定 index 索引处理插入元素 element
    boolean addAll(int index, Collection<? extends E> c) 
    //在指定 index 索引处理插入集合元素 c
    

    删除

    E remove(int index) 
    //删除指定索引 index 处的元素
    

    修改

    E set(int index, E element) 
    //修改指定索引 index 处的元素为 element			
    

    遍历

    E get(int index) + int size() 
    //for循环遍历集合中的每一个元素
    ListIterator<E> listIterator() 
    //通过列表迭代器遍历集合中的每一个元素
    ListIterator<E> listIterator(int index) 
    //通过列表迭代器从指定索引处开始正向或者逆向遍历集合中的元素
    

    获取

    E get(int index) 
    //获取指定索引处的元素
    int indexOf(Object o) 
    //从左往右查找,获取指定元素在集合中的索引,如果元素不存在返回 -1
    int lastIndexOf(Object o) 
    //从右往左查找,获取指定元素在集合中的索引,如果元素不存在返回 -1
    List<E> subList(int fromIndex, int toIndex) 
    //截取从 fromIndex 开始到 toIndex-1 处的元素
    

    List接口的遍历方式

    1. toArray

    2. Iterator

    3. foreach

    4. 普通for

    5. ListIterator


    List接口去除重复元素

    方式一:创建一个新的集合去除重复元素再使用地址传递

    方式二:在原集合的基础上使用选择排序思想去除重复元素

    List<String> list = new ArrayList<String>();
    		list.add("张三");
    		list.add("李四");
    		list.add("李四");
    		list.add("李四");
    		list.add("王五");
    
    for (int i = 0; i < list.size(); i++) {
        for (int j = i + 1; j < list.size(); j++) {
            if (list.get(i).equals(list.get(j))) {
                list.remove(j);
                j--;
            }
        }
    }
    

    并发修改异常的处理

    异常名称:并发修改异常 java.util.ConcurrentModificationException

    产生原因:在使用迭代器迭代的同时使用原集合对元素做了修改

    解决办法:

    1. 使用 toArray 方法

    2. 使用 普通 for 遍历

    3. 使用 ListIterator 遍历集合并且使用 列表迭代器修改元素


    以上
    @Fzxey

  • 相关阅读:
    vue绑定值与字符串拼接两种写法
    cmd 总是很卡,执行一条指令就卡死
    生产工具vscode
    js 关于 array 的相关操作––
    webAssembly
    github上fork别人的分支到目录下  
    68.Promise和setTimeout的区别
    67、Promise 构造函数是同步执行还是异步执行,那么 then 方法呢?
    66、深入理解 promise:promise的三种状态与链式调用
    65.ES6新的特性有哪些?
  • 原文地址:https://www.cnblogs.com/fzxey/p/10786769.html
Copyright © 2020-2023  润新知