package cn.burce.iterator;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
/*
* 集合中的迭代器 获取集合中的元素
* 接口Iterator:两个抽象方法
* Boolean hasNext()判断集合中还有没有可以取出的元素,如果有返还True
* next()取出集合的下一个元素
* Iterator接口,需要实现类
* Collection接口定义方法Iterator Iterator()
* ArrayList 重写Iterator(),返回了Iterator接口实现类的对象
* 使用ArrayList集合的对象
* Iterator it = array.iterator(),运行结果就是Iterator接口实现类的对象
* it是接口的实现类对象,调用方法hasNext()和next()集合元素迭代
*/
public class IteratorLearn {
public static void main(String[] args) {
Collection<String> c = new ArrayList<String>();
c.add("小明");
c.add("小军");
c.add("小和");
c.add("小啊");
c.add("123");
// 迭代器对集合ArrayList中的元素取出
// 调用集合的方法iterator()获取出,Iterator接口的是实现类对象
Iterator<String> it = c.iterator();
// 接口实现类对象,调用方法hasNext()判断集合中是否有元素
// 并用next()取出元素
while (it.hasNext())
{
System.out.println(it.next());
}
System.out.println("--------------------------");
for (Iterator<String> it1 = c.iterator(); it1.hasNext();)
{
System.out.println(it1.next());
}
System.out.println("-----------------------------");
// 集合可以存储任何类型的对象
// 集合中不指定数据类型,那就表示什么都可以存储
Collection c1 = new ArrayList();
c1.add("我");
c1.add("wwwwww");
// 迭代器获取
Iterator it2 = c1.iterator();
while (it2.hasNext())
{
System.out.println(it2.next());// 打印的这个是Object类型
String s = (String) it2.next();// 取长度需要向下转型
System.out.println(s.length());// 尽量加数据类型
}
}
}
package cn.burce.List;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class ListDemo1 {
/*
* 迭代器的并发异常 java.util.ConcurrentModificationException
* 不能修改集合长度
*/
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("abc1");
list.add("abc2");
list.add("abc3");
list.add("abc4");
// 使用迭代器遍历,获取时候判断集合中是否有abc3,有就添加ABC3
Iterator<String> it = list.iterator();
while (it.hasNext())
{
String s = it.next();
if (s.equals("abc3"))
{
list.add("ABC3");
}
System.out.println(s);
}
}
}