Классический for для перебора элементов List (отлично для ArrayList, плохо для LinkedList)
import java.util.List;
import static java.util.Arrays.asList;
public class ListExample_0_for {
public static void main(String[] args) {
List<String> list = asList("A", "B", "C");
// for
for (int k = 0; k < list.size(); k++) {
System.out.print(" " + list.get(k));
}
}
}
>> A B C
while для перебора элементов List (хорошо и для ArrayList, и для LinkedList)
import java.util.Iterator;
import java.util.List;
import static java.util.Arrays.asList;
public class ListExample_1_iter_while {
public static void main(String[] args) {
List<String> list = asList("A", "B", "C");
// while over iterator
Iterator<String> iter = list.iterator();
while (iter.hasNext()) {
System.out.print(" " + iter.next());
}
}
}
>> A B C
for по итератору для перебора элементов List (хорошо и для ArrayList, и для LinkedList)
import java.util.Iterator;
import java.util.List;
import static java.util.Arrays.asList;
public class ListExample_2_iter_for {
public static void main(String[] args) {
List<String> list = asList("A", "B", "C");
// for over iterator
for (Iterator<String> iter0 = list.iterator(); iter0.hasNext(); ) {
System.out.print(" " + iter0.next());
}
}
}
>> A B C
foreach для перебора элементов List (хорошо и для ArrayList, и для LinkedList), компилятор разворачивает его в for-по-итератору
import java.util.List;
import static java.util.Arrays.asList;
public class ListExample_3_foreach {
public static void main(String[] args) {
List<String> list = asList("A", "B", "C");
// foreach
for (String elem : list) {
System.out.print(" " + elem);
}
}
}
>> A B C
Аналогично для Set
import java.util.Iterator;
import java.util.Set;
import java.util.TreeSet;
import static java.util.Arrays.asList;
public class SetExample_1_iter_while {
public static void main(String[] args) {
Set<String> set = new TreeSet<>(asList("A", "B", "C"));
// while over iterator
Iterator<String> iter = set.iterator();
while (iter.hasNext()) {
System.out.print(" " + iter.next());
}
}
}
>> A B C
import java.util.TreeSet;
import java.util.Iterator;
import java.util.Set;
import static java.util.Arrays.asList;
public class SetExample_2_iter_for {
public static void main(String[] args) {
Set<String> set = new TreeSet<>(asList("A", "B", "C"));
// for over iterator
for (Iterator<String> iter = set.iterator(); iter.hasNext(); ) {
System.out.print(" " + iter.next());
}
}
}
>> A B C
import java.util.Set;
import java.util.TreeSet;
import static java.util.Arrays.asList;
public class SetExample_3_foreach {
public static void main(String[] args) {
Set<String> set = new TreeSet<>(asList("A", "B", "C"));
// foreach
for (String elem : set) {
System.out.print(" " + elem);
}
}
}
>> A B C
А вот как это выглядит для Map
import java.util.*;
public class MapExample_0_foreach_long {
public static void main(String[] args) {
Map<String, Integer> map = new TreeMap<>();
map.put("A", 10);
map.put("B", 20);
map.put("C", 30);
Set<String> keys = map.keySet();
Collection<Integer> values = map.values();
Set<Map.Entry<String, Integer>> entries = map.entrySet();
for (String key : keys) {
System.out.print(" " + key);
}
System.out.println();
for (Integer value : values) {
System.out.print(" " + value);
}
System.out.println();
for (Map.Entry<String, Integer> entry : entries) {
String key = entry.getKey();
Integer value = entry.getValue();
System.out.print(" " + key + "->" + value);
}
System.out.println();
}
}
>> A B C
>> 10 20 30
>> A->10 B->20 C->30
Ну или записанное чуть короче
import java.util.*;
public class MapExample_1_foreach_short {
public static void main(String[] args) {
Map<String, Integer> map = new TreeMap<>();
map.put("A", 10);
map.put("B", 20);
map.put("C", 30);
for (String key : map.keySet()) {
System.out.print(" " + key);
}
System.out.println();
for (Integer value : map.values()) {
System.out.print(" " + value);
}
System.out.println();
for (Map.Entry<String, Integer> entry : map.entrySet()) {
System.out.print(" " + entry.getKey() + "->" + entry.getValue());
}
System.out.println();
}
}
>> A B C
>> 10 20 30
>> A->10 B->20 C->30