인터페이스 기본 메소드 Iterator forEach

ilkwon bae·2023년 6월 21일
0

Java의 Iterable 인터페이스는 반복되거나 반복될 수 있는 객체의 동작을 정의하는 일련의 메서드를 제공합니다. 이러한 메서드를 사용하면 일반적인 방식으로 컬렉션 또는 요소 시퀀스를 사용할 수 있습니다. 다음은 Iterable 인터페이스에서 제공하는 일반적으로 사용되는 메서드 중 일부입니다.

Iterator iterator(): 컬렉션의 요소에 대해 Iterator를 반환합니다. Iterator를 사용하면 요소를 순차적으로 반복하고 next(), hasNext() 및 remove()와 같은 작업을 수행할 수 있습니다.
void forEach(Consumer<? super T> action): 컬렉션의 각 요소에 대해 주어진 작업을 수행합니다. Consumer를 인수로 사용하여 각 요소에 적용할 동작을 지정할 수 있습니다.
Spliterator spliterator(): 컬렉션의 요소 위에 Spliterator를 생성합니다. 'Spliterator'는 요소의 병렬 순회 및 분할을 지원합니다.

이러한 메서드를 사용하면 컬렉션 또는 요소 시퀀스를 반복하고 이에 대해 다양한 작업을 수행할 수 있습니다. Iterable 인터페이스를 구현함으로써 클래스는 향상된 for 루프를 사용하거나 명시적으로 Iterator를 사용하여 반복되는 기능을 제공할 수 있습니다.

Iterable 인터페이스는 이를 상속하는 List, Set 및 Queue와 같은 Java의 다른 컬렉션 인터페이스의 기반이라는 점에 유의하는 것이 중요합니다. 이를 통해 이러한 컬렉션은 Iterable 인터페이스에서 제공하는 기본 반복 기능을 상속할 수 있습니다.

Iterable 인터페이스를 구현하고 위에서 언급한 메서드에 필요한 구현을 제공함으로써 사용자 정의 반복 가능 클래스를 생성하여 사용자 정의 컬렉션 또는 시퀀스의 요소를 반복할 수 있습니다.

  1. forEach 사용 예
    ArrayList
import java.util.ArrayList;
import java.util.List;

public class ForEachExample {
    public static void main(String[] args) {
        List<String> names = new ArrayList<>();
        names.add("John");
        names.add("Sarah");
        names.add("Michael");

        // Using forEach to print each name
        names.forEach(name -> System.out.println("Name: " + name));

        // Using a method reference with forEach
        names.forEach(System.out::println);
    }
}

결과 값

Name: John
Name: Sarah
Name: Michael
John
Sarah
Michael

1.1
HashMap

import java.util.HashMap;
import java.util.Map;

public class HashMapForEachExample {
    public static void main(String[] args) {
        Map<String, Integer> studentScores = new HashMap<>();
        studentScores.put("John", 85);
        studentScores.put("Sarah", 90);
        studentScores.put("Michael", 92);

        // Using forEach to print each key-value pair
        studentScores.forEach((name, score) -> System.out.println("Name: " + name + ", Score: " + score));
    }
}

결과 값

Name: John, Score: 85
Name: Sarah, Score: 90
Name: Michael, Score: 92

profile
좋은 개발자가 되고 싶은 그냥 개발자

0개의 댓글

Powered by GraphCDN, the GraphQL CDN