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

자바(Java)로 컬렉션(Collection) 출력하기 – ArrayList 예제와 알고리즘 완벽 정리

자바에서 컬렉션을 출력하는 방법

이 글에서는 자바(Java)에서 컬렉션(Collection)을 출력하는 방법을 단계별로 살펴봅니다. 컬렉션은 객체들의 그룹을 저장하고 조작할 수 있는 아키텍처를 제공하는 자바의 핵심 프레임워크입니다. 자바 컬렉션을 활용하면 데이터에 대한 검색, 정렬, 삽입, 조작, 삭제와 같은 거의 모든 연산을 손쉽게 수행할 수 있습니다.

그럼 실제 예제를 통해 어떻게 동작하는지 확인해 보겠습니다.

[입력]

프로그램 실행

[출력 결과]

컬렉션의 요소는 다음과 같습니다:
Language : Java | Language_id : 101
Language : Scala | Language_id : 102
Language : Python | Language_id : 103
Language : Mysql | Language_id : 104

알고리즘

전체 흐름은 다음과 같은 단계로 진행됩니다.

STEP 1 - 프로그램 시작
STEP 2 - input_array라는 이름의 컬렉션(ArrayList) 선언
STEP 3 - 저장할 값 정의
STEP 4 - object_1 ~ object_4 객체를 생성하고, 각 객체를 컬렉션에 추가
STEP 5 - for-each 루프를 사용하여 컬렉션의 모든 요소 출력
STEP 6 - 프로그램 종료

핵심 포인트는 toString() 메서드를 오버라이드(재정의)하는 것입니다. System.out.println()으로 사용자 정의 객체를 출력하면, 재정의된 toString()이 반환하는 문자열 형식 그대로 화면에 표시됩니다.

예제 1 – main 함수에서 모든 로직을 한 번에 처리

첫 번째 예제에서는 객체 생성부터 출력까지 모든 연산을 하나의 main 함수 안에서 처리합니다. 코드가 짧고 흐름을 한눈에 파악하기 좋습니다.

import java.util.*;
public class Demo {
    String name;
    int id;
    Demo(String s, int n){
        name = s;
        id = n;
    }
    public String toString(){
        return "Language : " + name + " | Language_id : " + id;
    }
    static void print(ArrayList<Demo> input_array){
        System.out.println("The Elements of the collection are: ");
        for (Demo element : input_array)
            System.out.println(element);
    }
    public static void main(String[] args){
        ArrayList<Demo> input_array = new ArrayList<Demo>();
        Demo object_1 = new Demo("Java", 101);
        Demo object_2 = new Demo("Scala", 102);
        Demo object_3 = new Demo("Python", 103);
        Demo object_4 = new Demo("Mysql", 104);
        input_array.add(object_1);
        input_array.add(object_2);
        input_array.add(object_3);
        input_array.add(object_4);
        print(input_array);
    }
}

출력 결과

The Elements of the collection are:
Language : Java | Language_id : 101
Language : Scala | Language_id : 102
Language : Python | Language_id : 103
Language : Mysql | Language_id : 104

예제 2 – 객체 지향 프로그래밍(OOP) 방식으로 캡슐화

두 번째 예제에서는 데이터를 담는 클래스와 출력 로직을 분리하여, 객체 지향 프로그래밍의 캡슐화 원칙에 맞게 구조를 개선합니다. 데이터 클래스(Language)와 실행 클래스(Demo)를 나누면 역할이 명확해지고 유지보수가 쉬워집니다.

import java.util.*;
class Language {
    String name;
    int id;
    Language(String s, int n){
        name = s;
        id = n;
    }
    public String toString(){
        return "Language : " + name + " | Language_id : " + id;
    }
}
public class Demo {
    static void print(ArrayList<Language> input_array){
        System.out.println("The Elements of the collection are: ");
        for (Language element : input_array)
            System.out.println(element);
    }
    public static void main(String[] args){
        ArrayList<Language> input_array = new ArrayList<>();
        input_array.add(new Language("Java", 101));
        input_array.add(new Language("Scala", 102));
        input_array.add(new Language("Python", 103));
        input_array.add(new Language("Mysql", 104));
        print(input_array);
    }
}

출력 결과

The Elements of the collection are:
Language : Java | Language_id : 101
Language : Scala | Language_id : 102
Language : Python | Language_id : 103
Language : Mysql | Language_id : 104

정리

두 예제 모두 동일한 결과를 출력하지만, 접근 방식에는 차이가 있습니다. 첫 번째 방식은 빠르게 프로토타입을 만들 때 유용하고, 두 번째처럼 클래스를 분리하는 방식은 규모가 커지는 프로젝트에서 가독성과 확장성 면에서 훨씬 유리합니다. 또한 toString() 오버라이드만 잘 활용해도 반복문 없이 println 한 줄로 깔끔하게 컬렉션 내용을 확인할 수 있다는 점도 기억해 두세요.