Java Tutorial/Collections/Iterable Interface
Содержание
Creating Iterable Objects: using a for-each for loop on an Iterable object
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);
}
}
}
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
for (Type identifier : expression) {
statement (s)
}
A B C D
Iterable interface: while loop and for loop
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);
}
}
}
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().
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());
}
}
}
1 2 3