Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

Java에서 컬렉션 요소를 조회하는 3가지 방법 완벽 정리

Java에서는 컬렉션(Collection) 객체에 저장된 요소들을 세 가지 방식으로 조회할 수 있습니다. 각 방법의 특징과 사용 예제를 살펴보겠습니다.

1. for-each 루프(향상된 for문) 사용

for-each 루프(향상된 for 문)를 사용하면 컬렉션 객체 전체를 순서대로 간단하게 순회할 수 있습니다. 인덱스 관리가 필요 없어 코드가 간결하고 가독성이 뛰어나며, 단순히 모든 요소를 읽을 때 가장 널리 사용되는 방식입니다.

예제 코드

import java.util.ArrayList;
public class RetrievingData {
    public static void main(String[] args) {
        // ArrayList 객체 생성
        ArrayList<String> list = new ArrayList<String>();
        list.add("JavaFX");
        list.add("Java");
        list.add("WebGL");
        list.add("OpenCV");
        list.add("OpenNLP");
        list.add("JOGL");
        list.add("Hadoop");
        list.add("HBase");
        list.add("Flume");
        list.add("Mahout");
        list.add("Impala");
        System.out.println("ArrayList 내용: ");
        for (String e : list)
            System.out.println(e);
    }
}

실행 결과

ArrayList 내용:
JavaFX
Java
WebGL
OpenCV
OpenNLP
JOGL
Hadoop
HBase
Flume
Mahout
Impala

2. Iterator와 ListIterator 사용

Java는 컬렉션 객체의 요소를 조회하기 위해 IteratorListIterator 클래스를 제공합니다.

  • hasNext(): 다음 요소가 존재하면 true, 없으면 false를 반환합니다.
  • next(): 컬렉션의 다음 요소를 반환합니다.

이 두 메서드를 조합하면 반복자(Iterator) 객체를 통해 컬렉션의 모든 내용을 순차적으로 조회할 수 있습니다.

또한 ListIterator는 양방향 탐색을 지원합니다.

  • previous(): 이전 요소를 반환합니다.
  • hasPrevious(): 현재 위치 앞에 요소가 더 있는지 확인합니다.

컬렉션 객체에서 iterator() 또는 listIterator() 메서드를 호출하여 해당 반복자 객체를 얻을 수 있습니다.

예제 코드

import java.util.ArrayList;
import java.util.Iterator;
import java.util.ListIterator;
public class RetrievingData {
    public static void main(String[] args) {
        // ArrayList 객체 생성
        ArrayList<String> list = new ArrayList<String>();
        list.add("JavaFX");
        list.add("Java");
        list.add("WebGL");
        list.add("OpenCV");
        list.add("OpenNLP");
        list.add("JOGL");
        list.add("Hadoop");
        list.add("HBase");
        list.add("Flume");
        list.add("Mahout");
        list.add("Impala");
        System.out.println("ArrayList 내용 (첫 번째 → 마지막): ");
        Iterator it = list.iterator();
        while(it.hasNext()) {
            System.out.println(it.next());
        }
        System.out.println("ArrayList 내용 (마지막 → 첫 번째): ");
        ListIterator lit = list.listIterator();
        // 커서를 끝으로 이동
        while(lit.hasNext()) {
            lit.next();
        }
        // 역방향으로 출력
        while(lit.hasPrevious()) {
            System.out.println(lit.previous());
        }
    }
}

실행 결과

ArrayList 내용 (첫 번째 → 마지막):
JavaFX
Java
WebGL
OpenCV
OpenNLP
JOGL
Hadoop
HBase
Flume
Mahout
Impala
ArrayList 내용 (마지막 → 첫 번째):
Impala
Mahout
Flume
HBase
Hadoop
JOGL
OpenNLP
OpenCV
WebGL
Java
JavaFX

3. Enumeration 사용

Enumeration은 Java 초기 버전부터 제공된 인터페이스로, 주로 Vector와 같은 레거시(legacy) 컬렉션에서 사용됩니다.

  • hasMoreElements(): 현재 위치 이후에 요소가 더 있으면 true, 없으면 false를 반환합니다.
  • nextElement(): 열거형 객체의 다음 요소를 반환합니다.

이 두 메서드를 활용하면 컬렉션 객체의 내용을 순차적으로 조회할 수 있습니다.

예제 코드

import java.util.Enumeration;
import java.util.Vector;
public class EnumerationExample {
    public static void main(String args[]) {
        // Vector 객체 생성
        Vector<Integer> vec = new Vector<Integer>();
        // Vector에 데이터 추가
        vec.add(1254);
        vec.add(4587);
        vec.add(5211);
        vec.add(4205);
        vec.add(1124);
        vec.add(8115);
        // Enumeration을 이용해 요소 조회
        Enumeration<Integer> en = vec.elements();
        while(en.hasMoreElements()) {
            System.out.println(en.nextElement());
        }
    }
}

실행 결과

1254
4587
5211
4205
1124
8115

정리

Java에서 컬렉션 요소를 조회하는 대표적인 방법은 for-each 루프, Iterator/ListIterator, Enumeration 세 가지입니다. 단순 순회에는 for-each 루프가, 역방향 탐색이나 순회 중 요소 제거에는 ListIterator가, 레거시 Vector 등에서는 Enumeration이 적합합니다. 상황에 맞는 방법을 선택하면 더 효율적이고 안전한 코드를 작성할 수 있습니다.