자바 컬렉션?
- 다수의 데이터를 쉽고 효과적으로 처리할 수 있는 표준화된 방법을 제공하는 클래스의 집합
- 자료구조와 데이터를 처리하는 알고리즘을 구조화하여 클래스로 구현해 놓은 것
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를 리턴해야 합니다.
'언어 > 자바' 카테고리의 다른 글
직렬화 (Serialization) 와 역직렬화(Deserialization) (0) | 2021.09.13 |
---|---|
thread에 대해서! (0) | 2021.09.11 |
동시성(Concurrency)과 병렬성(Parallelism) (0) | 2021.09.08 |
java의 스트림이란?? (0) | 2021.09.06 |
함수형 프로그래밍 & 람다 & 메소드 참조 (0) | 2021.09.05 |