Java 8 forEach()
Данная статья написана командой Vertex Academy. Это одна из статей из нашего Учебника по Java 8. Надеемся, что данная статья Вам будет полезна. Приятного прочтения!
В этой статье мы рассмотрим обход коллекций с помощью нового выражения Java 8 - forEach().
1. forEach() и List
До Java 8 мы обходили коллекции с помощью for each цикла
1 2 3 4 5 6 7 |
public static void main(String[] args) { List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5); for (Integer number : numbers) { System.out.println(number); } } |
Теперь же у колекций появился метод forEach(), который принимает лямбда-выражение
1 2 3 4 5 |
public static void main(String[] args) { List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5); numbers.forEach(number -> System.out.println(number)); } |
Что сильно сокращает код
2. forEach() и Set
Для Set-ов все работает точно так же.
До Java 8
1 2 3 4 5 6 7 |
public static void main(String[] args) { Set<Integer> numbers = new HashSet<>(Arrays.asList(1, 2, 3, 4, 5)); for (Integer number : numbers) { System.out.println(number); } } |
Сейчас
1 2 3 4 5 |
public static void main(String[] args) { Set<Integer> numbers = new HashSet<>(Arrays.asList(1, 2, 3, 4, 5)); numbers.forEach(number -> System.out.println(number)); } |
3. forEach() и Map
До Java 8 для обхода Map-ы мы использовали entrySet и for each цикл
1 2 3 4 5 6 7 8 9 10 |
public static void main(String[] args) { Map<Integer, Integer> numbers = new HashMap<>(); numbers.put(1, 100); numbers.put(2, 200); numbers.put(3, 300); for (Map.Entry<Integer, Integer> entry : numbers.entrySet()) { System.out.println("Key: " + entry.getKey() + " Value: " + entry.getValue()); } } |
Теперь же Map-ы так же поддерживают выражение forEach
1 2 3 4 5 6 7 8 |
public static void main(String[] args) { Map<Integer, Integer> numbers = new HashMap<>(); numbers.put(1, 100); numbers.put(2, 200); numbers.put(3, 300); numbers.forEach((k, v) -> System.out.println("Key: " + k + " Value: " + v)); } |
Что на порядок удобнее прежнего способа.
3. Больше примеров с forEach()
3.1 Ссылка на метод (method reference)
С помощью Java 8 данный код
1 2 3 4 5 |
public static void main(String[] args) { List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5); numbers.forEach(number -> System.out.println(number)); } |
так же можно сократить, используя ссылку на метод
1 2 3 4 5 |
public static void main(String[] args) { List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5); numbers.forEach(System.out::println); } |
3.2 forEach() с условием
До Java 8
1 2 3 4 5 6 7 8 9 |
public static void main(String[] args) { List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5); for (Integer number : numbers) { if (number > 2) { System.out.println(number); } } } |
Сейчас
1 2 3 4 5 6 7 8 9 |
public static void main(String[] args) { List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5); numbers.forEach(number -> { if (number > 2) { System.out.println(number); } }); } |
Надеемся, что наша статья была Вам полезна. Также есть возможность записаться на наши курсы по Java в Киеве. Детальную информацию Вы можете найти у нас на сайте.