从Java中的集合中检索元素(For-each,Iterator,ListIterator和EnumerationIterator)

作者: Arvin Chen 分类: Java 来源: Break易站(www.breakyizhan.com)
  •   Java 集合框架

    先决条件:Java中的集合

    以下是从集合对象中检索任何元素的4种方法:

    For-each

    For-each循环,用于遍历集合中的项目。

    // Iterating over collection 'c' using for-each 
       for (Element e: c)
           System.out.println(e);

    我们将for-each循环中使用的':'读作“in”。因此循环读取为“对于元素中的每个元素e”,这里元素是存储元素类型项的集合。

    注意:在使用lambda表达式的Java 8中,我们可以简单地用for替换for-each循环

    elements.forEach(e  - > System.out.println(e));

    使用Cursor

    Cursor是一个接口,它用于逐个从集合对象中检索数据。Cursor有3种类型,如下所示:

    1. 迭代器Iterator接口:迭代器是集合框架提供的接口,用于遍历集合以及集合中项目的顺序访问。
         // Iterating over collection 'c' using Iterator
         for (Iterator i = c.iterator(); i.hasNext(); ) 
             System.out.println(i.next());

      它有3种方法:

      • boolean hasNext(): 如果迭代器有更多元素,则此方法返回true。
      • elements next():此方法返回迭代器中的下一个元素。
      • void remove():此方法从集合中删除迭代器返回的最后一个元素。
      // Java program to demonstrate working of iterators
      import java.util.*;
      public class IteratorDemo
      {
          public static void main(String args[])
          {
              //create a Hashset to store strings
              HashSet<String> hs = new HashSet<String>() ;
      
              // store some string elements
              hs.add("India");
              hs.add ("America");
              hs.add("Japan");
      
              // Add an Iterator to hs.
              Iterator it = hs.iterator();
      
              // Display element by element using Iterator
              while (it.hasNext())
                  System.out.println(it.next());
          }
      }
      

      输出:

      America
      Japan
      India

      请参阅Iterator与For-each,了解迭代器和for-each之间的差异。

      • booleanhasNext():如果 ListIterator在向前遍历列表时有更多元素,则返回true。
      • booleanhasPerivous():如果 ListIterator在反向遍历列表时有更多元素,则返回true。
      • element next():这将返回列表中的下一个元素。
      • element previous():返回列表中的上一个元素。
      • void remove():这将从列表中删除next()或previous()方法返回的最后一个元素。
      • int nextIndex()返回后续调用next()将返回的元素的索引。(如果列表迭代器位于列表的末尾,则返回列表大小。)
      • int previousIndex()返回后续调用 previous()返回的元素的索引。(如果列表迭代器位于列表的开头,则返回-1。)ListIterator接口:它是一个接口,包含从正向和反向检索集合对象中元素的方法。此迭代器用于基于列表的集合。
        它有以下重要方法:
    2. Iterator与ListIterator有何不同?迭代器只能在向前方向检索元素。但ListIterator也可以正向和反向检索元素。所以ListIterator比Iterator更受欢迎。使用ListItarator,我们可以获得迭代器的当前位置

      由于ListIterator可以访问两个方向的元素并支持其他运算符,因此ListIterator不能应用于Set(例如,HashSet和TreeSet。)。但是,我们可以使用带矢量和列表的LisIterator(例如ArrayList)。

      // Java program to demonstrate working of ListIterator
      import java. util.* ;
      
      class Test
      {
          public static void main(String args[])
          {
              // take a vector to store Integer objects
              Vector<Integer> v = new Vector<Integer>();
      
              // Adding Elements to Vector
              v.add(10);
              v.add(20);
              v.add(30);
      
              // Creating a ListIterator
              ListIterator lit = v.listIterator();
              System.out.println("In Forward direction:");
      
              while (lit.hasNext())
                  System.out.print(lit.next()+" ") ;
      
              System.out.print("\n\nIn backward direction:\n") ;
              while (lit.hasPrevious())
                  System.out.print(lit.previous()+" ");
          }
      }
      

      输出:

      In Forward direction:
      10 20 30 
      
      In backward direction:
      30 20 10

      3. EnumerationIterator接口:该接口可用于逐个检索该元素。此迭代器基于Enumeration中的数据,并具有以下方法:

      • booleanhasMoreElements():此方法测试Enumeration是否还有其他元素。
      • element nextElement():这将返回Enumeration中可用元素中可用的下一个元素

      Iterator和Enumeration有什么区别?

      Iterator可以选择从集合中删除枚举中不可用的元素。此外,Iterator具有名称易于遵循的方法,并且难以记住枚举方法。

      import java.util.Vector;
      import java.util.Enumeration;
      public class Test
      {
          public static void main(String args[])
          {
              Vector dayNames = new Vector();
              dayNames.add("Sunday");
              dayNames.add("Monday");
              dayNames.add("Tuesday");
              dayNames.add("Wednesday");
              dayNames.add("Thursday");
              dayNames.add("Friday");
              dayNames.add("Saturday");
      
              // Creating enumeration 
              Enumeration days = dayNames.elements();
      
              // Retrieving elements of enumeration
              while (days.hasMoreElements())
                  System.out.println(days.nextElement());
          }
      }
      

      输出:

      Sunday
      Monday
      Tuesday
      Wednesday
      Thursday
      Friday
      Saturday
  •   Java 集合框架
  •   本文标题:从Java中的集合中检索元素(For-each,Iterator,ListIterator和EnumerationIterator) - Break易站
    转载请保留页面地址:https://www.breakyizhan.com/java/5282.html

    发表笔记

    电子邮件地址不会被公开。 必填项已用*标注