본문 바로가기
자바(Java)

문자열 목록을 정렬하는 Java 프로그램 쉽게 이해하기

by 코딩하는 욤욤이 2024. 11. 27.
반응형

Java로 문자열 목록을 정렬하는 프로그램은 비교적 간단하며, ArrayList와 Collections 클래스의 메서드를 활용하면 쉽게 구현할 수 있습니다. 아래에서 프로그램의 구조와 코드를 단계별로 설명하겠습니다.


1. 문제 정의

문자열이 여러 개 들어 있는 목록(예: 이름, 단어, 문장 등)을 알파벳 순서(사전순) 또는 역순으로 정렬하는 프로그램을 작성합니다.


2. 필요한 개념

Java로 프로그램을 작성하기 위해 알아야 할 몇 가지 개념:

  1. ArrayList: Java에서 동적 크기를 가지는 배열을 지원하는 클래스.
  2. Collections.sort(): 목록을 정렬하기 위해 사용되는 유틸리티 메서드.
  3. Comparator: 사용자 정의 정렬 규칙을 지정할 때 사용하는 인터페이스.

3. 프로그램 설계

프로그램의 단계는 다음과 같습니다:

  1. 문자열 입력: 사용자로부터 문자열을 입력받아 목록에 추가.
  2. 정렬 수행:
    • 오름차순 정렬 (기본적으로 사전순 정렬).
    • 내림차순 정렬 (Comparator 사용).
  3. 결과 출력: 정렬된 목록을 사용자에게 보여줌.

4. 예제 코드

아래는 자세한 주석과 함께 작성된 코드입니다:

import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;

public class StringListSorter {

    public static void main(String[] args) {
        // 1. 문자열 목록 생성
        ArrayList<String> stringList = new ArrayList<>();
        Scanner scanner = new Scanner(System.in);

        // 2. 사용자 입력 받기
        System.out.println("문자열을 입력하세요 (정렬을 끝내려면 'exit' 입력):");
        while (true) {
            String input = scanner.nextLine();
            if (input.equalsIgnoreCase("exit")) {
                break;
            }
            stringList.add(input);
        }

        // 입력된 목록 출력
        System.out.println("\n입력된 문자열 목록: " + stringList);

        // 3. 오름차순 정렬
        Collections.sort(stringList);
        System.out.println("\n오름차순 정렬 결과: " + stringList);

        // 4. 내림차순 정렬
        Collections.sort(stringList, Collections.reverseOrder());
        System.out.println("\n내림차순 정렬 결과: " + stringList);

        scanner.close();
    }
}

5. 코드 실행 흐름

  1. 입력 단계:
    • 프로그램은 문자열을 입력받습니다.
    • 사용자가 exit를 입력하면 입력이 종료됩니다.
  2. 정렬 단계:
    • Collections.sort(stringList)를 사용하여 오름차순 정렬.
    • Collections.sort(stringList, Collections.reverseOrder())로 내림차순 정렬.
  3. 출력 단계:
    • 정렬된 결과를 출력합니다.

6. 입출력 예시

입력

문자열을 입력하세요 (정렬을 끝내려면 'exit' 입력):
apple
banana
grape
cherry
exit

출력

입력된 문자열 목록: [apple, banana, grape, cherry]

오름차순 정렬 결과: [apple, banana, cherry, grape]

내림차순 정렬 결과: [grape, cherry, banana, apple]

7. 확장 가능성

  • 대소문자 구분 없이 정렬: String.CASE_INSENSITIVE_ORDER를 사용할 수 있습니다.
Collections.sort(stringList, String.CASE_INSENSITIVE_ORDER);
 
  • 한글 정렬: 한글 문자열을 정렬하려면 Java가 기본적으로 지원하는 유니코드 기반 정렬을 활용하면 됩니다.
  • 사용자 정의 정렬: 예를 들어, 문자열의 길이에 따라 정렬하려면 Comparator를 구현합니다.
stringList.sort((s1, s2) -> Integer.compare(s1.length(), s2.length()));

8. 설명이 포함된 핵심 코드 요약

  • 오름차순 정렬: 
Collections.sort(stringList);
  • 내림차순 정렬:
Collections.sort(stringList, Collections.reverseOrder());
  • 사용자 정의 정렬 예 (문자열 길이 기준):
stringList.sort((s1, s2) -> s1.length() - s2.length());

위 코드는 코딩을 공부하는 누구라도 쉽게 이해할 수 있도록 작성되었으며, 실제로 실행하면 Java의 정렬 기능을 활용하는 법을 체험할 수 있습니다. 추가 질문이 있으면 말씀해 주세요! 😊

 

반응형