import java.util.*;
class Demo
{
public static void main(String[] args)
{
ArrayList a1 = new ArrayList(); //建立一个集合
//添加元素
a1.add("01");
a1.add("02");
a1.add("03"); //这些是元素的引用放到了集合当中,用集合填加这没什么问题
//当我们来个a1.iterator()的时候,我们就把元素的引用防到了迭代器里面了.
/* 现在能操作元素的方式有2种了,要么用集合的方式操作,要么用迭代器的方式操作
这2种操作方式操作的是同一种元素,
it.next();迭代器正在操作取出操作的过程中.你又用到了集合al.add操作方法操作
就行成了同时病发,出现安全隐患.
不同做的是: 对同一组元素进行多种同时操作.
*/
//在迭代器过程中,准备添加或者删除元素
Iterator it = a1.iterator();
while (it.hasNext())
{
Object obj=it.next(); //我取到02,obj指向02,
if(obj.equals("02")) //判断条件满足
//al.add(""02"");
it.remove(); //这句话的意思是 遍历到不要让努力白废的时候,就把这句话的引用从集合中干掉. 但这个元素的引用还在内存当中,元素还在被obj使用
sop("obj="+obj); //打印元素都还在.
}
sop(a1); //集合中就少了02
}
public static void sop(Object obj)
{
System.out.println(obj);
}
}
/*
迭代器 只有3钟方法:
方法摘要
boolean hasNext()
如果仍有元素可以迭代,则返回 true。
E next()
返回迭代的下一个元素。
void remove()
从迭代器指向的 collection 中移除迭代器返回的最后一个元素(可选操作)。
只有 3种方法没有添加怎么办呢.
java.util
接口 Iterator<E>
这个哥们提供了小弟
所有已知子接口:
ListIterator<E>, (列表迭代器)
小弟继承了Iterator
public interface ListIterator<E>extends Iterator<E>
列表迭代器继承着迭代器,,,而列表迭代器因为他里面有指针,角标.
它的方法 要比他爹的方法多的多.
*/
list 的ListIterator出现以后,可以在遍历的过程中,增删改查!
import java.util.*;
class Demo
{
public static void sop(Object obj)
{
System.out.println(obj);
}
public static void main(String[] args)
{
//建立一个集合
ArrayList a1 = new ArrayList();
//填加元素
a1.add("努力01");
a1.add("努力02");
a1.add("努力03");
sop(a1);
//演示列表迭代器
ListIterator li =new ListIterator();
while (li.hasNext()) //如果仍有元素可以迭代
{
Object obj = li.next(); //返回迭代的下一个元素
if(obj.equals("努力02"));//指定的对象与列表是否相等.
li.set("努力08");//用指定元素替换列表中指定位置元素
}
}
}