이번 글에서는 자바(Java)에서 람다식(Lambda Expression)을 활용해 ArrayList를 반복하는 방법을 예제 코드와 함께 단계별로 살펴보겠습니다.
ArrayList 클래스는 크기가 자동으로 늘어나거나 줄어드는 가변 크기 배열(resizable array)로, java.util 패키지에 포함되어 있습니다. 자바의 기본 배열과 ArrayList의 가장 큰 차이점은 기본 배열은 한 번 생성하면 크기를 변경할 수 없지만, ArrayList는 요소를 자유롭게 추가·삭제할 수 있어 훨씬 유연하다는 점입니다.
예제 미리 보기
입력 − 프로그램을 실행합니다.
기대 출력 −
정의된 리스트: Java Python Scala Mysql Redshift
알고리즘
STEP 1 - 시작 STEP 2 - 필요한 변수를 선언한다 STEP 3 - 값을 정의한다 STEP 4 - ArrayList를 생성한다 STEP 5 - 'add' 메서드로 요소를 추가한다 STEP 6 - 콘솔에 결과를 출력한다 STEP 7 - 'forEach'와 람다식으로 요소를 순회하며 출력한다 STEP 8 - 종료
예제 1: 향상된 for문으로 순회하기
첫 번째 예제는 모든 연산을 main 함수 하나에 모아 처리하는 가장 기본적인 방식입니다.
import java.util.ArrayList;
public class Demo {
public static void print(ArrayList<String> inputList) {
System.out.print("\n정의된 리스트:\n");
for (String language : inputList) {
System.out.print(language + " ");
}
}
public static void main(String[] args) {
System.out.println("필요한 패키지를 가져왔습니다");
ArrayList<String> inputList = new ArrayList<>();
inputList.add("Java");
inputList.add("Python");
inputList.add("Scala");
inputList.add("Mysql");
inputList.add("Redshift");
print(inputList);
}
}실행 결과
필요한 패키지를 가져왔습니다 정의된 리스트: Java Python Scala Mysql Redshift
예제 2: 객체 지향 방식으로 구현하기
두 번째 예제는 출력 로직을 별도의 메서드로 분리해 객체 지향 프로그래밍(OOP) 스타일로 작성했습니다. 이렇게 하면 코드의 재사용성과 가독성이 한층 더 좋아집니다.
import java.util.ArrayList;
public class Demo {
public static void print(ArrayList<Integer> inputList) {
System.out.print("\n정의된 리스트:\n");
for (Integer element : inputList) {
System.out.print(element + " ");
}
}
public static void main(String[] args) {
System.out.println("필요한 패키지를 가져왔습니다");
ArrayList<Integer> inputList = new ArrayList<>();
inputList.add(500);
inputList.add(600);
inputList.add(700);
inputList.add(800);
inputList.add(950);
print(inputList);
}
}실행 결과
필요한 패키지를 가져왔습니다 정의된 리스트: 500 600 700 800 950
예제 3: 람다식과 forEach로 순회하기
자바 8부터 도입된 람다식을 사용하면 익명 내부 클래스 없이도 반복 로직을 아주 간결하게 표현할 수 있습니다. ArrayList가 제공하는 forEach 메서드에 (매개변수 -> 실행문) 형태의 람다식을 전달하기만 하면 됩니다.
import java.util.ArrayList;
public class LambdaDemo {
public static void main(String[] args) {
ArrayList<String> inputList = new ArrayList<>();
inputList.add("Java");
inputList.add("Python");
inputList.add("Scala");
inputList.add("Mysql");
inputList.add("Redshift");
// 람다식으로 리스트 순회
System.out.println("\n람다식으로 리스트를 순회합니다:");
inputList.forEach(language -> System.out.println(language));
// 메서드 참조를 사용하면 더욱 간결해집니다
inputList.forEach(System.out::println);
}
}실행 결과
람다식으로 리스트를 순회합니다: Java Python Scala Mysql Redshift Java Python Scala Mysql Redshift
정리
지금까지 향상된 for문, 객체 지향 방식, 그리고 람다식을 이용하는 세 가지 방법으로 ArrayList를 반복해 보았습니다. 특히 람다식과 forEach, 메서드 참조(System.out::println)를 함께 사용하면 코드가 훨씬 짧고 읽기 쉬워지므로, 자바 8 이상 환경이라면 적극적으로 활용해 보시기 바랍니다.