Java Tutorial/Collections/Iterable Interface
Содержание
Creating Iterable Objects: using a for-each for loop on an Iterable object
<source lang="java">
import java.util.Iterator; import java.util.NoSuchElementException; // This class supports iteration of the // characters that comprise a string. class IterableString implements Iterable<Character>, Iterator<Character> {
private String str; private int count = 0; public IterableString(String s) { str = s; } // The next three methods implement Iterator. public boolean hasNext() { if (count < str.length()){ return true; } return false; } public Character next() { if (count == str.length()) throw new NoSuchElementException(); count++; return str.charAt(count - 1); } public void remove() { throw new UnsupportedOperationException(); } // This method implements Iterable. public Iterator<Character> iterator() { return this; }
} public class MainClass {
public static void main(String args[]) { IterableString x = new IterableString("This is a test."); for (char ch : x){ System.out.println(ch); } }
}</source>
T h i s i s a t e s t .
"for" statement for Iterable object in JDK 5 has been enhanced.
It can iterate over a Collection without the need to call the iterator method. The syntax is
<source lang="java">
for (Type identifier : expression) {
statement (s) }</source>
A B C D
Iterable interface: while loop and for loop
<source lang="java">
import java.util.Arrays; import java.util.Iterator; import java.util.List; public class MainClass {
public static void main(String[] args) { List list = Arrays.asList("A", "B", "C", "D"); Iterator iterator = list.iterator(); while (iterator.hasNext () ) { String element = (String) iterator.next (); System.out.println(element); } }
}</source>
A B C D
Using an Iterator
The Iterator interface has the following methods:
- hasNext.
- next.
- remove.
Compared to an Enumeration, hasNext() is equivalent to hasMoreElements() and next() equates to nextElement().
<source lang="java">
import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; public class MainClass {
public static void main(String[] a) { Collection c = new ArrayList(); c.add("1"); c.add("2"); c.add("3"); Iterator i = c.iterator(); while (i.hasNext()) { System.out.println(i.next()); } }
}</source>
1 2 3