Java 集合总结(2) List接口特有方法及其迭代器

Collection 单列集合 的根接口
----- List 如果是实现了List接口的集合类,该集合类具备的特点:有序,可重复。
----- Set 如果是实现了Set接口的集合类,该集合类具备的特点: 无序,不可重复。
首先创建List实现类的对象

List list = new ArrayList();

List接口中 特有 的方法具备的特点: 操作的方法都存在索引值。
只有List接口下面的集合类才具备索引值。其他接口下面的集合类都没有索引值。
List接口中特有方法:

1.添加
add(int index, E element)
addAll(int index, Collection<? extends E> c)

  list.add("GONG");
  list.add("JINGA");
  list.add("TING");
  1. 获取:
    get(int index)
    indexOf(Object o)
    lastIndexOf(Object o)
    subList(int fromIndex, int toIndex)
  2. 修改:
    set(int index, E element)
list.set(3, "网络"); // 使用指定的元素替换指定索引值位置的元素。

4.迭代
listIterator()

ListIterator特有方法:
先创建ListIterator实现类对象

ListIterator it  = list.listIterator();    
//返回是一个List接口中特有的迭代器  最初的cursor是指向第一个元素

添加:
hasPrevious() 判断是否存在上一个元素
previous() 获取上一个元素,当前指针先向上移动一个单位,然后再取出当前指针所指向的元素。

System.out.println("有上一个元素吗?"+it.hasPrevious());
System.out.println("获取上一个元素:"+it.previous());
//指针在previous()后是停留在上一个元素的位置。

易错点:

while(it.hasNext()) {  
   //死循环  指针会不停的一上一下,
   it.next();
   System.out.println("元素:"+it.previous())//因为指针在previous()后是停留在上一个元素的位置。
}

next() 先取出当前元素,指针在向下移动一个单位

while (it.hasNext()) {
     System.out.println("元素:"+it.next());
}
while (it.hasPrevious()) {
     System.out.println("元素:"+it.previous());
}

add(E e); //插入到指针所指向的位置,指针原来所指向的元素及其后边元素都向后移动

it.add("九命");  
//插入到指针所指向的位置,指针原来所指向的元素及其后边元素都向后移动

set(E e) //替换迭代器最后一次返回的元素 用指定元素替换 next 或 previous 返回的最后一个元素(可选操作)。

it.next();
it.set("qq");//一定要注意是在使用 next()或 previous()后在使用,否则会报错

迭代器在变量元素的时候要注意事项: 在迭代器迭代元素 的过程中,不允许使用集合对象改变集合中的元素 个数,如果需要***添加***或者***删除***只能使用迭代器的方法进行操作。
如果使用过了集合对象改变集合中元素个数那么就会出现ConcurrentModificationException异常。
迭代元素 的过程中: 迭代器创建到使用结束的时间。例如:

  List list = new ArrayList();
  list.add("qq");
  list.add("bb");
  list.add("cc");
  ListIterator it = list.listIterator(); // 获取到迭代器
  while (it.hasNext()) {
   System.out.print(it.next() + ",");
   it.add("aa"); // 把元素添加到当前指针指向位置
   list.add("aa"); // add方法是把元素添加到集合的末尾处的。这是正确的
   list.remove("qq");
   
//  list.add("aa");  
//  it.next();
//这两行代码是错误的,因为在迭代器使用过程中使用了List方法,互换位置即可


   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值