【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)使用集合遍历,使用集合添加元素