zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    20年的Flash要退出舞台:当年哪个小游戏你最爱?
    一些实用但不为人知的Unix命令
    20145221 《Java程序设计》第九周学习总结
    20145221 《Java程序设计》实验报告四:Android开发基础
    20145221 《Java程序设计》实验报告三:敏捷开发与XP实践
    20145221 《Java程序设计》第八周学习总结
    Java实现:数据结构之排序
    20145221 《Java程序设计》第七周学习总结
    20145221 《Java程序设计》实验报告二:Java面向对象程序设计
    网络安全攻防学习平台
  • 原文地址:https://www.cnblogs.com/fzxey/p/10786769.html
Copyright © 2011-2022 走看看