CodeGym/Java Blog/무작위의/자바 반복자
John Squirrels
레벨 41
San Francisco

자바 반복자

무작위의 그룹에 게시되었습니다
회원
안녕! 오늘 수업에서는 Java Iterator에 대해 이야기하겠습니다. 도서관에 가서 특정 책을 찾고 싶다고 상상해 보십시오. 어떻게 합니까? 논픽션이라면 Dewey Decimal System이 있습니다. 소설인 경우 성의 알파벳순으로 정렬됩니다. 당신이 무엇을 찾고 있든, 언젠가는 당신이 찾고 있는 것을 찾을 때까지 한 번에 한 권씩 책을 뒤져야 합니다. Array , ArrayList , Queue 또는 List 에 저장되어 있는지 여부에 관계없이 Java에 항목 모음이 있을 때마다 특정 값을 어떻게 찾습니까? 어느 시점에서 각 요소를 한 번에 하나씩 통과해야 합니다. 이것이 Java iterator의 목적입니다.Java Iterator 사용 방법: 간략한 자습서 - 1

자바에서 Iterator란?

자바에서 이터레이터란? 컬렉션의 각 요소를 보는 방법입니다. 컬렉션이란 Collection 클래스에 있는 모든 것을 의미합니다. 여기에는 다음이 포함됩니다.
  • 배열목록
  • 해시셋
  • LinkedHashSet
  • LinkedList
  • 우선순위 대기열
  • 벡터
  • 그리고 많은 다른 사람들…
또한 Set , List , Queue , DequeueSorted Set 과 같은 클래스에 대한 다양한 인터페이스를 포함합니다 . Iterator<E> 는 Interface Iterator<E> 클래스의 공용 인터페이스 메서드입니다. Java 1.2에서 도입되었으며 컬렉션의 순차적 요소를 검사하는 방법으로 Enumeration을 대체했습니다.

Java에서 반복자로 For 루프를 사용하면 안 되는 이유

모든 사람이 Java에서 컬렉션을 반복하도록 가르치는 첫 번째 방법 중 하나는 루프입니다. 다음과 같습니다.
class Main {
  public static void main(String[] args) {
    int exampleArray[] = new int[10];

    //fill array with data

    for(int x = 0; x < exampleArray.length; x++) {
      System.out.println("Content of element " + x + "is: " + exampleArray[x]);
    }
  }
}
출력은 다음과 같은 목록입니다.
Content of element 0 is: 0
Content of element 1 is: 1
Content of element 2 is: 2
etc.…
이것은 용도가 있지만 컬렉션이 인덱스 기반 시스템에 요소를 저장하지 않으면 어떻게 될까요? 예를 들어 Set 에는 일반적으로 순서가 없습니다. 따라서 Java에서 반복자로 for 루프를 사용하는 관행에서 벗어나 대신 Iterator<E> 클래스 를 사용하여 연습하는 것이 좋습니다 . 다음은 몇 가지 Java 반복기 예제입니다.

Java에서 Iterator를 사용하는 방법

다음은 Java에서 반복자를 사용하는 방법에 대한 몇 가지 예입니다. 반복자 클래스를 사용할 때 컬렉션을 순회하는 세 가지 방법이 있습니다. while() 루프, for() 루프 및 forEach() 루프를 사용할 수 있습니다 . 이 for 루프는 이전에 이야기한 루프와 다릅니다. 다음은 세 가지 다른 Java 반복기 예제입니다. 먼저 반복할 컬렉션을 설정해 보겠습니다 .
import java.util.*; // imports ArrayList, Collection and Iterator

class Main {
  public static void main(String[] args) {
    Collection<String> example = new ArrayList<String>();

    example.add("Item 1");
    example.add("Item 2");
    example.add("Item 3");
    example.add("Item 4");
  }
}
이것은 4개의 항목을 로드한 ArrayList 로 구성된 간단한 컬렉션 입니다. 이제 Iterator 클래스를 사용하여 ArrayList를 순회하는 세 가지 방법을 살펴보겠습니다 .

동안() 루프

Iterator<String> iterator = example.iterator();

while (iterator.hasNext()) {
   System.out.println("Element Value= " + iterator.next());
}
while() 루프는 미래 요소가 있는지 확인하기 위해 Iterator 클래스의 .hasNext() 부울 메서드를 사용합니다. 전제조건이 참이면 진행합니다. false로 반환되면 루프가 종료됩니다. 여기서 핵심 부분은 .hasNext().next() 메서드가 모두 첫 번째 요소의 초기 검사를 수행한다는 것입니다. Collection 비어 있고 첫 번째 요소가 없으면 메서드는 .hasNext() 에 대해 false를 반환하고 .next() 메서드 에 대해 NoSuchElementException을 발생시킵니다 .

for 루프

for (Iterator<String> iterator = example.iterator(); iterator.hasNext();) {
  System.out.println("Element Value= " + iterator.next());
}
이것은 보다 전통적인 for 루프처럼 보입니다. 조건 확인 및 변경 부분으로 .hasNext() 메서드를 사용합니다 . 초기화는 Iterator에 대한 호출입니다.

For:각 루프

for (String s : example) {
  System.out.println("Element Value= " + s);
}
For :Each 루프는 for 루프이지만 읽는 방법을 모른다면 조금 혼란스러울 수 있습니다. For:Each 루프 의 구문은 for (data_type variableName : collectionName){ body} 입니다 . 이 for:each 루프에는 몇 가지 단점이 있습니다. 첫째, 컬렉션을 한 방향으로만 이동할 수 있습니다. 둘째, 각 요소를 반복해야 합니다. 당신은 그들 중 하나를 건너 뛸 수 없습니다. 그러나 Java의 편리한 목록 반복자로서 이것이 최선의 선택입니다. 플러스 측면에서 for:each 루프는 읽기가 매우 쉽고 일단 알고 나면 잘못하기가 어렵습니다. 세 반복자 루프의 출력이 무엇인지 궁금하다면 모두 동일합니다.
Element Value= Item 1
Element Value= Item 2
Element Value= Item 3
Element Value= Item 4

Java For Maps에서 Iterator를 사용하는 방법

맵은 데이터를 저장하는 데 널리 사용되는 방법이지만 Collection 을 확장하지 않기 때문에 이전 반복기를 사용하여 맵을 직접 탐색할 수 없습니다. 그렇다면 Java에서 반복자를 사용하여 MapHashMap 을 살펴보는 방법은 무엇입니까 ? 네 가지 좋은 Java 맵 반복자 메서드가 있습니다. 우리는 그것들을 개별적으로 다룰 것입니다. 먼저 일련의 값이 있는 지도를 로드해 보겠습니다.
import java.util.*; //imports Map and HashMap

class Main {
  public static void main(String[] args) {
    Map<String, String> example = new HashMap<String, String>();

    example.put("alpha", "one");
    example.put("beta", "two");
    example.put("gamma", "three");

  }
}

Java 해시맵 반복자 메서드: forEach(action)

example.forEach((k,v) -> System.out.println("Key: "+ k + ", Value: " + v));
이 메서드는 람다 식을 사용하여 반복합니다. 람다 연산자는 forEach() 메서드이며 본문은 값을 출력합니다. 이것은 다중 매개변수 연산자를 사용합니다. 이것은 Java 8에서 맵 반복자를 위한 가장 빠르고 깨끗한 방법입니다.

Java 해시맵 반복자 메서드: For:Each() 루프

for (Map.Entry<String, String> iterate : example.entrySet()) {
  System.out.println("Key: " + iterate.getKey() + ", Value: " + iterate.getValue());
}
이는 For:Each 구문을 사용하여 entrySet() 메서드를 호출하여 키와 값을 요소로 포함하는 집합을 반환합니다. 또한 .Entry() 메서드를 사용할 때 객체는 이 반복이 발생하는 동안에만 참입니다.

Java 해시맵 반복자 메서드: Map.Entry<k, v>

Iterator<Map.Entry<String, String>> iterator = example.entrySet().iterator();

while(iterator.hasNext()){
  Map.Entry<String, String> element = iterator.next();
  System.out.println("Key: " + element.getKey() + ", Value: " + element.getValue());
)
이 메서드는 Collections Iterator 및 메서드를 사용하기 위해 Map을 집합으로 다시 변환합니다 . 이 세 가지 반복자 메서드의 경우 반환은 다음과 같습니다.
Key: alpha, Value: one
Key: beta, Value: two
Key: gamma, Value: three
Java Hashmap Iterator Method: keySet() and values()
for (String key : example.keySet()) {
  System.out.println("Key: " + key);
}
for (String value : example.values()) {
  System.out.println("Value: " + value);
}
이것은 다른 방식으로 요소를 반환합니다. 먼저 모든 키를 순서대로 반환한 다음 모든 값을 반환합니다.
Key: alpha
Key: beta
Key: gamma
Value: one
Value: two
Value: three
코멘트
  • 인기
  • 신규
  • 이전
코멘트를 남기려면 로그인 해야 합니다
이 페이지에는 아직 코멘트가 없습니다