迭代器Iterator

  • 迭代器:用来遍历集合用的,把集合的数据一个一个取出来.
  • 单词 \:iterate迭代 iterator迭代器

1. 获取集合的迭代器对象 iterator()方法

  • iterator(): 返回此集合中元素的迭代器,通过集合对象的iterator()方法得到
  • 一个新的迭代器对象,在一开始会默认指向集合中第0个数据

2. 迭代器遍历集合用到的方法

  • hasNext()方法 可以判断当前迭代器指向的集合的位置是否有数据
  • next()方法 取出当前位置的元素 , 并且 将迭代器移动到下一个数据的位置

代码

Collection ll = new ArrayList<>();
ll.add("aaa");
ll.add("bbb");
ll.add("cc");
ll.add("dddd");
ll.add("eee");
​
//获取集合的迭代器 对象 ,一开始默认指向第0个元素
Iterator it = ll.iterator();
​
//next:  1获取当前指向的数据 ,2然后指向下一个数据
//String s01 = it.next();
//System.out.println(s01);
//System.out.println(it.next());
//System.out.println(it.next());
//System.out.println(it.next());
//System.out.println(it.next());
​
//System.out.println(it.next());
//判断指向的数据是否存在
//if (it.hasNext()) {
//    System.out.println(it.next());
//}
​
​
while (it.hasNext()){
    System.out.println(it.next());
}

3. 迭代器循环中删除

  • remove: 会删除 迭代器调用next返回的数据

代码

//创建集合 多态的形式
ArrayList list = new ArrayList<>();
list.add("aa");
list.add("bb");
list.add("aa");
list.add("aa");
list.add("ee");
list.add("xx");
list.add("aa");
list.add("aa");
list.add("yy");
​
// 1 获取迭代器对象
Iterator it = list.iterator();
//  2 循环获取数据
while (it.hasNext()) {
    String str = it.next();
    //3判断str是不是aa
    if ("aa".equals(str)) {
        it.remove();
    }
}
System.out.println(list);

原理图

image-20221207150424286

总结

  • itrator()
  • hasNext next remove
  • 从开始一个一个的向后获取数据,如果要从头获取 就必须重新获取迭代器对象
如人饮水,冷暖自知。
最后更新于 2023-08-05