• Tags
  •         
  • www.breakyizhan.com
  •    

    先决条件: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

     
    转载请保留页面地址:https://www.breakyizhan.com/java/5282.html