JAVA深化篇_14——Iterator迭代器接口介绍

Iterator接口

Iterator迭代器接口介绍

Collection接口继承了Iterable接口,在该接口中包含一个名为iterator的抽象方法,所有实现了Collection接口的容器类对该方法做了具体实现。iterator方法会返回一个Iterator接口类型的迭代器对象,在该对象中包含了三个方法用于实现对单例容器的迭代处理。

Iterator对象的工作原理:

Iterator接口定义了如下方法:

  1. boolean hasNext(); //判断游标当前位置的下一个位置是否还有元素没有被遍历;
  2. Object next(); //返回游标当前位置的下一个元素并将游标移动到下一个位置;
  3. void remove(); //删除游标当前位置的元素,在执行完next后该操作只能执行一次;

Iterator迭代器的使用迭代List接口类型容器

public class IteratorListTest {
  public static void main(String[] args) {
    //实例化容器
    List<String> list = new ArrayList<>();
    list.add("a");
    list.add("b");
    list.add("c");
    //获取元素
    //获取迭代器对象
    Iterator<String> iterator = list.iterator();
    //方式一:在迭代器中,通过while循环获取元素
    while(iterator.hasNext()){
      String value = iterator.next();
      System.out.println(value);
     }
    System.out.println("-------------------------------");
    //方法二:在迭代器中,通过for循环获取元素
    for(Iterator<String> it = list.iterator();it.hasNext();){
      String value = it.next();
      System.out.println(value);
     }


   }
}

迭代Set接口类型容器

public class IteratorSetTest {
  public static void main(String[] args) {
    //实例化Set类型的容器
    Set<String> set = new HashSet<>();
    set.add("a");
    set.add("b");
    set.add("c");
    //方式一:通过while循环
    //获取迭代器对象
    Iterator<String> iterator = set.iterator();
    while(iterator.hasNext()){
      String value = iterator.next();
      System.out.println(value);
     }
    System.out.println("-------------------------");
    //方式二:通过for循环
    for(Iterator<String> it = set.iterator();it.hasNext();){
      String value = it.next();
      System.out.println(value);
     }
   }
}

迭代Map接口类型容器

public class IteratorMapTest {
  public static void main(String[] args) {
    //实例化HashMap容器
    Map<String, String> map = new HashMap<String, String>();


    //添加元素
    map.put("a", "A");
    map.put("b", "B");
    map.put("c", "C");


    //遍历Map容器方式一
    Set<String> keySet = map.keySet();


    for (Iterator<String> it = keySet.iterator(); it.hasNext();){
      String key = it.next();
      String value = map.get(key);
      System.out.println(key+" ------------- "+value);
     }
    System.out.println("------------------------");


    //遍历Map容器方式二
    Set<Map.Entry<String, String>> entrySet = map.entrySet();
    Iterator<Map.Entry<String, String>> iterator = entrySet.iterator();
    while(iterator.hasNext()){
      Map.Entry entry = iterator.next();
      System.out.println(entry.getKey()+" ------------ "+ entry.getValue());
     }
   }
}

在迭代器中删除元素

public class IteratorRemoveTest {
  public static void main(String[] args) {
    List<String> list = new ArrayList<>();
    list.add("a");
    list.add("b");
    list.add("c");
    list.add("d");
    Iterator<String> iterator = list.iterator();
    while(iterator.hasNext()){
      //不要在一次循环中多次调用next方法。
      String value = iterator.next();
      iterator.remove();
     }
    System.out.println("----------------");
    for(Iterator<String> it = list.iterator();it.hasNext();){
      System.out.println(it.next());
      list.add("dddd");
     }
   }
}

posted @ 2023-10-22 21:16  Gjq-  阅读(16)  评论(0编辑  收藏  举报  来源