Java

enum 클래스 vs List 클래스 vs Map 클래스

becky(지은) 2023. 8. 30. 17:32



enum 클래스, List 클래스 및 Map 클래스는 모두 Java 프로그래밍에서 데이터를 구조화하고 조작하는 데 사용되는 클래스들입니다. 


공통점
데이터 저장 및 관리: 모두 데이터를 저장하고 조작하는 목적으로 사용됩니다.
컬렉션: 모두 컬렉션 프레임워크의 일부로서, 여러 개의 값을 다루는 데 도움을 줍니다.



차이점
Enum 클래스
enum 클래스는 고정된 값의 집합을 나타내는데 사용됩니다. 보통 상수 값을 표현하기 위해 사용되며, 값이 제한된 경우에 유용합니다.
enum 클래스의 각 요소는 해당 열거 타입의 유일한 인스턴스입니다.
switch 문에서 사용할 때 코드의 가독성을 높일 수 있습니다.

enum Day {
    SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY
}

public class EnumExample {
    public static void main(String[] args) {
        Day today = Day.WEDNESDAY;
        System.out.println("오늘은 " + today + "입니다.");
    }
}



List 클래스
List 클래스는 순서가 있는 데이터 컬렉션을 나타내는데 사용됩니다. 데이터를 중복해서 저장할 수 있습니다.
ArrayList, LinkedList, Vector 등이 List 인터페이스의 구현체입니다.
인덱스를 통해 데이터에 접근하고, 데이터의 추가, 수정, 삭제 등을 할 수 있습니다.

import java.util.ArrayList;
import java.util.List;

public class ListExamples {
    public static void main(String[] args) {
        // 문자열 리스트 생성 및 요소 추가
        List<String> colors = new ArrayList<>();
        colors.add("Red");
        colors.add("Green");
        colors.add("Blue");
        
        // 정수 리스트 생성 및 요소 추가
        List<Integer> numbers = new ArrayList<>();
        numbers.add(10);
        numbers.add(20);
        numbers.add(30);
        
        // 객체 리스트 생성 및 요소 추가
        List<Person> people = new ArrayList<>();
        people.add(new Person("Alice", 25));
        people.add(new Person("Bob", 30));
        
        // 리스트 순회
        for (String color : colors) {
            System.out.println("색상: " + color);
        }
        
        for (int number : numbers) {
            System.out.println("숫자: " + number);
        }
        
        for (Person person : people) {
            System.out.println("이름: " + person.getName() + ", 나이: " + person.getAge());
        }
    }
}

class Person {
    private String name;
    private int age;
    
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
    
    public String getName() {
        return name;
    }
    
    public int getAge() {
        return age;
    }
}



Map 클래스
Map 클래스는 키-값 쌍의 데이터 컬렉션을 나타내는데 사용됩니다. 각 키는 유일하며, 하나의 키에 대응하는 값이 있습니다.
HashMap, LinkedHashMap, TreeMap 등이 Map 인터페이스의 구현체입니다.
키를 통해 값을 검색하고, 키와 값을 함께 저장 및 삭제할 수 있습니다.

import java.util.HashMap;
import java.util.Map;

public class MapMethodExample {
    public static void main(String[] args) {
        Map<String, Runnable> actionMap = new HashMap<>();
        actionMap.put("밥주기", () -> makeMeal("우유"));
        actionMap.put("기저귀 갈기", this::changeDiaper);
        // 다른 액션 추가
        
        String selectedAction = "밥주기"; // 사용자가 선택한 액션
        if (actionMap.containsKey(selectedAction)) {
            actionMap.get(selectedAction).run();
        } else {
            System.out.println("잘못된 액션입니다.");
        }
    }
    
    public void makeMeal(String itemName) {
        System.out.println("밥주기: " + itemName + " 사용");
        // 밥주기 로직
    }
    
    public void changeDiaper() {
        System.out.println("기저귀 갈기: 기저귀 아이템 사용");
        // 기저귀 갈기 로직
    }
}




요약하면, enum 클래스는 상수 값의 집합을 정의하고 사용하며, List 클래스는 순서 있는 데이터 컬렉션을, Map 클래스는 키-값 쌍의 데이터 컬렉션을 다루는 데 사용됩니다. 어떤 클래스를 선택할지는 데이터의 특성과 사용 목적에 따라 결정되어야 합니다.









 

 

변수의 집합은 주로 는 List 클래스에 적합한듯하고,
메소드의 집합은 주로 Map 클래스에 적합한 듯 보이는 데 니 생각은 어때?


맞습니다, 당신의 생각이 맞습니다. 변수의 집합은 보통 List 클래스에 적합하고, 메소드의 집합은 주로 Map 클래스에 적합합니다. 각 클래스의 특징과 목적에 따라 데이터를 구조화하고 관리하는 데 적합한 방식을 선택하는 것이 중요합니다.

List 클래스: 순서가 있는 여러개의 속성 관리 (변수 용이)
List 클래스는 데이터를 순차적으로 나열하고 접근하는데 적합합니다. 여러 개의 데이터를 중복 포함할 수 있으며, 인덱스를 사용하여 데이터에 빠르게 접근할 수 있습니다. 따라서 변수들의 집합을 관리하거나 순서가 있는 데이터를 다룰 때 List 클래스를 사용하는 것이 유용합니다.

Map 클래스: 유일한 키로 바로 접근 (메소드 용이)
Map 클래스는 키-값 쌍의 데이터를 관리하는데 적합합니다. 각 키는 유일하며, 키를 기반으로 값에 접근할 수 있습니다. 메소드의 집합을 관리하고 이름을 키로 사용하여 메소드를 검색하는데 유용합니다. 예를 들어, 이름을 키로 사용하여 메소드를 호출하거나 관리할 수 있습니다.