[Java] List for문으로 탐색/순회
June 03, 2024
Java에서 for문을 이용하여 리스트를 탐색, 순회하는 방법에 대해서 알아보겠습니다.
1. for문을 이용한 방법
기본적인 for 루프입니다. for문에서 index를 리스트 크기까지 증가시키면서 리스트의 모든 요소를 순회합니다.
Arrays.asList("apple", "banana", "cherry")
: 인자로 전달된 객체들을 갖고 있는 리스트 생성
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class Example {
public static void main(String[] args) {
List<String> fruits = new ArrayList<>(Arrays.asList("apple", "banana", "cherry"));
for (int i = 0; i < fruits.size(); i++) {
System.out.println(fruits.get(i));
}
}
}
Output:
apple
banana
cherry
2. 향상된 for문을 이용한 방법
for (String fruit : fruits)
와 같은 형태를 향상된 for문이라고 합니다. 리스트의 모든 요소들이 순회하면서 fruit에 대입됩니다. 만약 index가 필요하다면 일반적인 for문을 사용해야 합니다.
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class Example {
public static void main(String[] args) {
List<String> fruits = new ArrayList<>(Arrays.asList("apple", "banana", "cherry"));
for (String fruit : fruits) {
System.out.println(fruit);
}
}
}
Output:
apple
banana
cherry
3. Iterator를 이용한 방법
리스트의 Iterator 객체를 얻고, Iterator를 통해서 리스트의 모든 요소를 순회할 수 있습니다.
- 아래 예제는 while을 사용하여 Iterator의 끝에 도달할 때까지 리스트를 탐색합니다.
iterator.hasNext()
: 다음 요소가 있으면 true, 끝에 도달해서 다음 요소가 없으면 false 리턴fruits.iterator()
: 리스트의 Iterator 객체를 리턴
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
public class Example {
public static void main(String[] args) {
List<String> fruits = new ArrayList<>(Arrays.asList("apple", "banana", "cherry"));
Iterator<String> iterator = fruits.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
}
}
Output:
apple
banana
cherry
4. Stream을 이용한 방법
List.stream()
는 리스트를 스트림으로 변환합니다.
Stream.forEach()
를 사용하여 모든 요소들을 순회할 수 있습니다. forEach()
는 함수를 인자로 받습니다.
(fruit) -> System.out.println(fruit)
: 인자 1개를 전달하고, 리턴 값은 없는 함수forEach(System.out::println)
와 같이, 메소드 레퍼런스 방식을 이용할 수도 있습니다. (동작은 동일)
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class Example {
public static void main(String[] args) {
List<String> fruits = new ArrayList<>(Arrays.asList("apple", "banana", "cherry"));
fruits.stream().forEach((fruit) -> System.out.println(fruit));
// fruits.stream().forEach(System.out::println); // 이 방법도 가능
}
}
Output:
apple
banana
cherry
5. Java 8의 forEach를 이용한 방법
리스트도 List.forEach()
함수를 제공하며, 위와 같이 함수를 인자로 받습니다.
- 이 예제에서는
forEach(System.out::println)
와 같이, 메소드 레퍼런스 방식으로 구현함 (fruit) -> System.out.println(fruit)
처럼 함수를 직접 구현해도 동작은 동일함
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class Example {
public static void main(String[] args) {
List<String> fruits = new ArrayList<>(Arrays.asList("apple", "banana", "cherry"));
fruits.forEach(System.out::println);
}
}
Output:
apple
banana
cherry