【JavaSE_学习笔记】List接口

【JavaSE_学习笔记】List接口

List

List:如果实现了List接口的集合类,该集合类的特点:有序,元素可重复
  有序:在集合中的有序不是指自然顺序,存储元素和取出元素是一致的
List接口特有的方法:
增加:
  void add(int index, Object element)在列表的指定位置插入指定元素
  void addAll (int index,Collection c)在指定索引处把一个集合的元素添加到另一个集合中
删除:
  remove(int index)指定索引处删除元素,返回被删除的元素
获取:
  get(int index)指定索引处获取元素
  indexOf(Object o)查找指定元素第一次出现的索引值,如果不包含指定的元素则返回-1表示
  lastIndexOf(Object o)查找指定元素最后一次出现的索引值
  subList(int fromIndex,int toIndex)指定开始与结束的索引值截取集合中的元素,返回List子集合
举例:

import java.util.ArrayList;
import java.util.List;

public class DemoList {
    public static void main(String[] args) {
        //创建List集合对象
        List list = new ArrayList() ;

        //添加一些元素
        list.add("hello") ;
        list.add("world") ;
        list.add("java") ;

        //list.add(1, "javaweb") ;//list[hello, javaweb, world, java]

        //System.out.println("remove:"+list.remove(2));//list[hello, world]

        //System.out.println("set:"+list.set(1, "JavaEE")) ;//list[hello, JavaEE, java]

        //System.out.println("get:"+list.get(1)) ;//get:world

        //System.out.println(list.indexOf("javaweb"));//-1

        List list2=list.subList(1, 3);
        System.out.println(list2);//[world, java]

        System.out.println("list"+list);
    }
}

ListIterator接口:

ListIterator:列表迭代器,继承List接口
ListIterator特有的方法:
  hasPrevious()问是否有上一个元素
  previous()游标向上移动一个单位,然后获取当前游标指向的元素
  add(Element e)把元素添加到当前游标指向的位置上
  set(Element e)使用指定的元素替代迭代器最后一次返回的元素
举例:

import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;

public class Demo_ListIterator {
    public static void main(String[] args) {
        List list=new ArrayList();
        list.add("王林");
        list.add("马云");
        list.add("潘石屹");
        list.add("马化腾");
        ListIterator it=list.listIterator();
        while(it.hasNext()){
            it.next();
        }
        //逆着遍历集合
        while(it.hasPrevious()){
            System.out.print(it.previous()+",");//马化腾,潘石屹,马云,王林,
        }

        it.next();
        it.next();
        //当前游标位置加入
        it.add("王思聪");
        System.out.println(list);//[王林, 马云, 王思聪, 潘石屹, 马化腾]

        it.next();
        //当前游标位置替换
        it.set("雷军");
        System.out.println(list);//[王林, 马云, 王思聪, 雷军, 马化腾]
    }
}

迭代器在迭代时应该注意:
1.迭代器在迭代过程中不准使用集合对象改变集合的个数,否则会报出ConcurrentModificationException(并发修改异常)
  并发(同一个时间点),并行(同一个时间段)
  java.util.ConcurrentModificationException:并发修改异常:当方法检测到对象的并发修改,但不允许这种修改时,抛出此异常
2.在迭代过程中如需改变集合中的元素个数,只能使用迭代器的方法去改变
解决方案:
  1)使用迭代器遍历集合,使用迭代器添加元素
  2)使用集合遍历,使用集合添加元素

你可能感兴趣的:(学习笔记)