언어/자바

자바 컬렉션(List, Map, Set)

ballde 2021. 9. 10. 11:01

자바 컬렉션?

  • 다수의 데이터를 쉽고 효과적으로 처리할 수 있는 표준화된 방법을 제공하는 클래스의 집합
  • 자료구조와 데이터를 처리하는 알고리즘을 구조화하여 클래스로 구현해 놓은 것

List

  • 인덱스로 관리 - 저장하면 자동 인덱스 부여, 삭제 가능

  • 객체의 주소 값을 참조함
  • 동일한 객체를 중복 저장할 수 있는데 이 경우 동일한 번지가 참조

arrayList , linkedList

데이터의 검색, 삽입, 삭제 시 성능 비교

검색

  • ArrayList는 인덱스 기반 자료구조, get(index) O(1), LinkedList는 검색 시 모든 요소 탐색 o(n)

그런데 !! ArrayList <E> list = new ArrayList <>(); 가 아닌 List <E> list = new ArrayList <>(); 를 사용하는 이유가 뭘까요?~

ArrayList<E>형 참조 변수가 아닌 List <E> 형 참조 변수를 선언한 이유는 코드에 유연성을 제공하기 위함이다. 주로 List <E>에 선언된 메서드를 호출하기 때문에 굳이 ArrayList <E> 형 참조 변수를 선언할 필요가 없으면 List <E> 형 참조 변수로 인스턴스를 참조할 경우 컬렉션 클래스의 교체가 용이해진다. 

ex) List<String> list = new ArrayList <>();

—> List <String> list = new LinkedList <>();

 

Set

  • 순서와 상관 X
  • 중복 허용X

HashSet<E> 클래스

  • 자동 정렬 X

TreeSet<E> 클래스

  • 자동 정렬
  • 이진 탐색 트리 구조로 데이터를 저장한다.
  • 인덱스 존재X → 추가 ,삭제할 때 list에 비해 느림

이진탐색 트리구조는 담번에 따로 쓰겠습니다~ (링크)~

 

 

Map

  • key value
  • 키는 중복 X, 값은 중복 가능

HashMap

HashMap은 Map 인터페이스를 구현한 대표적인 Map 컬렉션입니다.

HashMap의 키로 사용할 객체는 hashCode()와 equals() 메소드를 재정의해서 동등 객체가 될 조건을 정해야 합니다.

동등 객체, 즉 동일한 키가 될 조건은 hashCode()의 리턴값이 같아야 하고, equals() 메소드가 true를 리턴해야 합니다.