HashMap에서 하나의 Key에 2개의 Value를 저장하고 싶을 때

itonse·2024년 5월 17일
0

JAVA

목록 보기
9/19

Java의 HashMap 자료구조에서 하나의 key에 두 개의 value를 저장하려는 상황에서는 두 가지 방법을 고려할 수 있습니다.

1. List를 사용하는 방법

HashMap<Integer, List<Integer>> map = new HashMap<>();

List<Integer> values = new ArrayList<>();

values.add(10); // value1
values.add(20); // value2

map.put(1, values);

// Accessing values
List<Integer> retrievedValues = map.get(1);
int value1 = retrievedValues.get(0);
int value2 = retrievedValues.get(1);
  • 장점
    단순성: List를 사용하면 구조가 단순하며, 값이 두 개뿐일 때 List의 크기가 고정되므로 쉽게 값을 관리할 수 있습니다.
    사용 용이성: 값을 추가하거나 접근할 때의 코드가 직관적이고 간단합니다.

  • 단점
    고정된 크기 문제: 값이 두 개로 고정되어 있으므로, 이를 강제하거나 값을 읽을 때 항상 두 개를 고려해야 합니다. 잘못된 접근 시 IndexOutOfBoundsException이 발생할 수 있습니다.
    가독성 저하: 값을 읽을 때 List의 각 인덱스가 의미하는 바를 명시적으로 표현하기 어렵습니다.



2. 중첩 HashMap을 사용하는 방법

HashMap<Integer, HashMap<String, Integer>> map = new HashMap<>();
HashMap<String, Integer> values = new HashMap<>();

values.put("value1", 10);
values.put("value2", 20);

map.put(1, values);

// Accessing values
HashMap<String, Integer> retrievedValues = map.get(1);
int value1 = retrievedValues.get("value1");
int value2 = retrievedValues.get("value2");
  • 장점
    명확한 구조: 내부 HashMap의 key를 사용하여 값의 의미를 명확히 할 수 있습니다.
    예를 들어, "value1"과 "value2"를 사용하여 두 값을 구분할 수 있습니다.
    유연성: 값이 두 개 이상으로 늘어나더라도 쉽게 확장할 수 있습니다.

  • 단점
    복잡성 증가: 중첩된 구조로 인해 코드가 다소 복잡해지고, 값을 추가하거나 접근할 때 더 많은 코드가 필요합니다.
    성능 부담: HashMap을 중첩해서 사용할 경우, 메모리 사용량이 증가할 수 있으며, 값에 접근할 때 추가적인 해시 연산이 필요합니다.



3. 결론

두 값이 항상 존재하고, 그 의미가 명확하며, 코드를 간결하게 유지하고 싶다면 List를 사용하는 것이 좋습니다.
하지만 값의 의미를 명확히 표현하고 유연한 구조를 원한다면 중첩 HashMap을 사용하는 것이 더 적합합니다.

0개의 댓글

관련 채용 정보