JAVA集合框架——Iterator

JAVA集合框架

Java集合框架——迭代器


1. 迭代器

  前文中我们在集合框架Collection接口中提到了迭代器Iterator,但该方法并没有在AbstractCollection中得到实现,而是在具体的类中具体实现。本文主要阐述迭代器的更能和作用。
  任何容器类,都必须有某种方式插入元素并将它们再次取回。对于List来讲,add()是插入元素的方法之一,get()是取出元素的方法之一。那么我们为什么用使用迭代器?因为从更高层的角度思考,迭代器可以帮助我们在重写代码的情况下就能将代码应用于不同的容器,换言之,迭代器统一了对容器的访问方式。迭代器就此应运而生了。
  迭代器是一个对象,它的工作是遍历并选择序列中的对象,而客户端程序员不必知道或关系该序列底层的结构。Java的迭代器只能单向移动,Iterator通常具有以下四个功能:

  • 使用iterator()方法返回一个迭代器Iterator,该迭代器将准备好返回序列的第一个元素。
  • 使用next()方法获得序列中的下一个元素。
  • 使用hasNext()方法检查序列中是否还有元素。
  • 使用remove()方法将迭代器最新返回的元素删除。

    下面将给出迭代器使用的具体示范代码。

    import java.util.*;
    public class test1{
    public static void main(String[] args){
    Set<String> set=new HashSet<String>();//创建规则集
    set.add("China");
    set.add("Japan");
    set.add("Korea");
    set.add("United States");
    set.add("Britain");
    Iterator<String> it=set.iterator();//创建规则集相应的迭代器
    
    while(it.hasNext()){//遍历集合内的元素
        System.out.println(it.next()+" ");
      }
    
    for(String Name:set)//for-each语句同样可以遍历集合
      System.out.println(Name); 
      }
    }

      现在我们可以考虑一个新的方法display(),该方法依托于迭代器,遍历并输出集合内的元素。该方法可以不用知道确切的集合容器的类型,可以使规则集、线性表等等任意Collection容器,均可以实现集合元素的输出。具体实现如下所示,代码内所使用的的规则集同前文。

    public class test1{
    public static void main(String[] args){
     TreeSet<String> treeset=new TreeSet<String>(set);
     LinkedList<String> linkedlist=new LinkedList<String>(set);
    
     display(set.iterator());
     display(linkedlist.iterator());
     display(treeset.iterator());
    }
    public static void display(Iterator<E> it){
     while(it.hasNext()){
       E e=it.next();
       System.out.println(e);
      }
     }
    }

      这里我们所展示的display方法不包含任何有关它所遍历的序列的类型信息,这也展示了迭代器的最终目的,即能够将遍历序列的操作与序列底层的结构分离

1.1 ListIterator

  ListIterator是Iterator的子类型,它只能用于各种List类的访问。Iterator只能前向移动,但是ListIterator可以双向移动。并且还可以产生相对于迭代器在列表中指向的当前位置的前一个和后一个元素的缩影,并且可以使用set()方法替换迭代器访问过的最后一个元素。我们可以通过调用listIterator()方法来产生一个指向List开始处的ListItertor,并且还可以通过调用listIterator(n)方法创建一个以阿卡似乎就指向索引为n的元素出的ListIterator。以下代码承接上文代码,对ListIterator做出演示。

 public class test1{
   public static void main(String[] args){
     LinkedList<String> linkedlist=new LinkedList<String>(set);
     ListIterator<String> linkIt=linkedlist.listIterator();

     while(linkIt.hasNext()){
       System.out.println(linkIt.next()+" "+linkIt.nextIndex()+" "linkIt.previousIndex());
     }
   }
  }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java中,集合类库提供了一个统一的迭代器接口 `Iterator`,用于遍历集合中的元素。通过迭代器,我们可以按照特定顺序访问集合中的元素,而不需要了解底层数据结构的具体实现。 使用迭代器遍历集合的一般步骤如下: 1. 获取集合对象的迭代器:通过调用集合类的 `iterator()` 方法获取迭代器对象。 2. 使用 `hasNext()` 方法检查是否还有下一个元素。 3. 使用 `next()` 方法获取下一个元素。 4. 对当前元素进行操作。 5. 重复步骤 2-4 直到遍历完所有元素。 以下是一个示例代码,展示如何使用迭代器遍历一个 ArrayList 集合: ```java import java.util.ArrayList; import java.util.Iterator; public class IteratorExample { public static void main(String[] args) { ArrayList<String> list = new ArrayList<>(); list.add("Apple"); list.add("Banana"); list.add("Orange"); // 获取迭代器 Iterator<String> iterator = list.iterator(); // 遍历集合 while (iterator.hasNext()) { String element = iterator.next(); System.out.println(element); } } } ``` 上述代码中,通过调用 `list.iterator()` 方法获取了 ArrayList 的迭代器对象。然后使用 `hasNext()` 方法检查是否还有下一个元素,再使用 `next()` 方法获取下一个元素。最后,我们可以对每个元素进行操作,这里简单地将其打印到控制台。 需要注意的是,在使用迭代器遍历集合的过程中,如果在迭代时对集合进行了修改(如添加、删除元素),则需要使用迭代器的 `remove()` 方法来删除元素,以避免出现并发修改异常。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值