본문 바로가기

스파르타 기술면접

List / Set / MAp, HashMap

List, Set, Map, HashMap의 차이

 💡 List, Set, Map, HashMap은 모두 Java의 컬렉션 프레임워크에서 제공하는 인터페이스와 클래스

 

<List와 Set의 차이점 - 중복을 허용하는지 여부>

List

  • 순서가 있는 데이터의 집합, 중복된 값을 허용, 인덱스를 통해 데이터에 접근
  • 구현체 : ArrayList, LinkedList, Vector 등
  • ArrayList, LinkedList : 크기가 유동적 → 데이터 추가, 삭제가 자주 있는 경우에 적합 Vector : 멀티스레드 환경에서 적합 → 데이터의 동시성 처리에 적합

Set

  • 순서가 없는 데이터 집합, 중복 허용 X
  • 검색을 위한 자료구조로 많이 사용됨 →hash 때문이므로 셋 자체가 빠른게 아니므로 빼는게 좋다.
  • HashSet, TreeSet 등
  • HashSet : Hash 알고리즘을 사용해 데이터 저장 → 검색 속도가 빠름 TreeSet : 이진 검색 트리를 사용해 데이터 저장 → 정렬된 순서로 데이터를 반환
  • 지원하는 연산
    • 차집합 : removeAll()
    • 합집합 : addAll()

<Map과 HashMap의 차이점 - 데이터를 저장하는 방식>

Map

  • key-value 쌍으로 이루어진 데이터 집합, key는 중복 허용 X, value는 중복 허용
  • HashMap, TreeMap 등
  • HashMap : Hash 알고리즘을사용 key-value 데이터를 저장 → 검색속도가 빠름 TreeMap : 이진 검색 트리를 사용해 key-value 데이터를 저장 → 정렬된 순서로 데이터를 반환

HashMap

  • Map인터페이스를 구현한 클래스 중 하나, Hash 알고리즘을 사용 key-value 데이터를 저장
  • key와 value는 null값을 가질 수 있음, key는 중복 허용 X
  • key의 hash 값을 기반으로 데이터를 저장 → 검색속도 빠름, 대용량 데이터 처리에 적합 BUT) 순서가 유지되지 않기 때문에 순서에 의존하는 처리에는 적합 X

Hash 알고리즘 : 임의의 길이의 입력 데이터를 고정된 길이의 출력 데이터로 매핑하는 함수를 말합니다. 이 때 매핑된 출력 데이터는 해시(Hash) 값이라고 하며, 입력 데이터가 조금이라도 다르면 결과값도 크게 달라지는 특성을 갖습니다.

이진 검색 트리 :