HOWTO · Java

Java에서 링크 된 목록을 통해 반복

이 기사에서는 Java에서 연결 목록을 반복하는 방법을 소개합니다.

연결 목록은 데이터 요소의 선형 및 정렬 된 모음입니다. 요소의 배열은 메모리의 유비쿼터스 또는 임의의 위치에 있습니다. 연결된 목록 데이터 구조는 노드를 사용하여 연결됩니다. 노드는 시퀀스에서 다음 요소의 메모리 위치 인 데이터 필드 및 참조 링크를 보유합니다.

연결 목록 요소를 연속되지 않은 메모리 위치에 저장하고 마지막 노드에는 널 참조에 대한 포인터가 포함됩니다.

연결 목록을 반복하는 방법에는 여러 가지가 있습니다. 아래에 언급 된 몇 가지 방법이 있습니다.

Java에서for루프를 사용하여 링크 된 목록 반복

LinkedList클래스는 아래 코드 예제에서new키워드를 사용하여 인스턴스화됩니다. LinkedList클래스의add()메소드는 목록에 요소를 추가합니다. add메소드는이 목록의 끝에 지정된 요소를 추가합니다. 이 메소드는addLast메소드와 동일합니다. 요소가 목록에 성공적으로 추가되면 메서드는true를 반환합니다.

목록을 만든 후 반복을 위해for루프를 사용합니다. 아래 코드에서int i=0은 카운터 변수의 인스턴스화입니다. 변수가 목록의 크기보다 작아야 함을 나타내는 조건을 사용하십시오. 그리고 목록의 크기는size()메소드를 사용하여 계산됩니다. 마지막으로 변수 값은 1 씩 증가합니다. 이 완전한 프로세스는 변수 값이 목록의 크기보다 커질 때까지 실행됩니다.

package linkedList;

import java.util.LinkedList;

public class IterateLinkedListUsingForLoop {
  public static void main(String[] args) {
    LinkedList<String> list = new LinkedList<>();
    list.add("First");
    list.add("Second");
    System.out.println("Iterating the list using for-loop");
    for (int i = 0; i < list.size(); i++) {
      System.out.println(list.get(i));
    }
  }
}

위 프로그램은 아래와 같이 출력을 생성합니다.

Iterating the list using for-loop
First
Second

Java의 향상된for루프를 사용하여 링크 된 목록 반복

향상된for루프는for-each루프라고도하며for루프의 한 유형입니다.

아래 코드에서 연결 목록 개체를 인스턴스화해야합니다. 그런 다음 일부 요소 (예 : String 개체)를 추가해야합니다. 이제 반복을 위해이 경우for-each를 사용합니다.

package linkedList;

import java.util.LinkedList;

public class IteratingLinkedListUsingForEach {
  public static void main(String[] args) {
    LinkedList<String> list = new LinkedList<>();
    list.add("First");
    list.add("Second");
    for (String temp : list) {
      System.out.println(temp);
    }
  }
}

프로그램의 출력은 첫 번째 프로그램의 출력과 동일합니다.

while루프를 사용하여 연결된 목록을 반복합니다

인스턴스화 및 리스팅 프로세스에 요소 추가는 언급 된 모든 방식에서 유사합니다.

아래 예에서 카운터 변수 값은while루프 외부에서 0으로 인스턴스화됩니다. while루프 구문은 인스턴스화 할 위치가 없습니다. 이제 조건을 적용하십시오. 이것은 변수가 주어진 목록의 크기보다 작은 지 확인합니다. true를 반환하고println()함수가 실행됩니다. 그 후에 카운터 변수를 증가시켜야합니다. 변수가 목록 크기보다 커질 때까지 프로세스가 반복됩니다.

package linkedList;

public class IteratingLinkedListUsingWhileLoop {
  public static void main(String[] args) {
    LinkedList<String> list = new LinkedList<>();
    list.add("First");
    list.add("Second");
    int i = 0;
    while (i < list.size()) {
      System.out.println(list.get(i));
      i++;
    }
  }
}

Java에서Iterator클래스를 사용하여 링크 된 목록 반복

IteratorCollections객체의 루핑에 대해 작동하는 클래스입니다. 이들은Array,ArrayList,LinkedList등입니다. 컬렉션 객체를 반복하므로이를반복자라고합니다. Collections객체를 반복하려면 Iterator 클래스의 메서드를 사용해야합니다.

iterator()메소드를 사용하여 모든 컬렉션에 대한Iterator를 가져옵니다. hasNext메소드는 목록에 추가 요소가 있는지 확인합니다. 반복에 더 많은 요소가 있으면true를 리턴합니다.

next메소드는 루프의 다음 요소를 가져옵니다. 반복에서 다음 현재 객체를 반환하고 목록에 요소가 없으면NoSuchElementException을 발생시킵니다.

아래 코드는 Iterator 클래스와 그 메서드를 보여줍니다.

package linkedList;

public class IteratingLinkedListUsingIterator {
  public static void main(String[] args) {
    LinkedList<String> list = new LinkedList<>();
    list.add("First");
    list.add("Second");
    Iterator<String> iterator = list.iterator();
    while (iterator.hasNext()) {
      System.out.println(iterator.next());
    }
  }
}

Java 8 Streams를 사용하여 링크 된 목록 반복

stream은 항상Collection객체 위에 형성됩니다. 아래 프로그램에서 우리는stream메소드를 사용합니다. 함수는 스트림 함수 체인에 적용됩니다. forEach터미널작업입니다. 이것은 터미널 기능 후에는 어떤 작업도 수행 할 수 없음을 의미합니다. consumer스트림을 사용하며이 스트림은 요소를 방출하지 않고 소비합니다.

아래 코드는 Java 8 스트림의 사용과 목록을 반복하는 기능을 보여줍니다.

package linkedList;

public class IteratingLinkedListUsingStreams {
  public static void main(String[] args) {
    LinkedList<String> list = new LinkedList<>();
    list.add("First");
    list.add("Second");
    list.stream().forEach((element) -> { System.out.println(element); });
  }
}