개발_웹/Java

Java | 컬렉션 (Collection)

zuyo 2021. 5. 15. 03:37
반응형

About Collection & Generic…

  • 여러 자료 구조들을 Generic 기법으로 구현해놓은 것
  • Generic 타입이 정해지지 않은 틀로 C++ templaate 비슷하다.
  • 가변 크기이기 때문에 고정 크기의 배열보다 객체들을 쉽게 삽입, 삭제, 검색하게 해준다.
  • Collection의 요소로는 객체만 가능하다. 기본 타입은 Wrapper Class로 자동 Boxing되어 저장된다.
  • <E>, <K>, <V>등은 '타입 매개 변수' Collection의 요소를 일반화시킨 타입이다특정 타입만 다루지 않고, 여러 종류의 타입을 사용할 수 있기 위해 사용한다.

 

컬렉션의 종류

 

ArrayList

  • 중간에 추가, 삭제 시 배열로 하던 방식처럼 인덱스를 이동시킨다.
  • 때문에 오버헤드가 많이 발생한다는 특징이 있다.
  • 추가/삭제가 많지 않은 자료구조에 적합하다.

 

LinkedList

  • 중간에 포인터 하나만 바꿔주면 되므로 오버헤드가 적다.
  • 대신에 요소들의 포인터들 때문에 메모리 효율이 ArrayList보다 나쁘다.
  • 추가/삭제가 빈번한 자료구조에 적합하다.

 

Vector

  • ArrayList와 유사하나, Thread 동기화를 보장한다.

 

Map

  • 키는 Set으로, 값은 List로 구성되어 있다.
  • 예를 들어, LinkedHashMap은 값들이 LinkedList로 구성되어 있는 것.

 

 

컬렉션 업캐스팅하여 사용하기

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

유연하게 정렬 방법을 바꿀 수 있게하기 위해 처음부터 업캐스팅해서 선언하는 습관을 들인다.

 

예를 들면 ArrayList 선언 시 List로 업캐스팅하여 선언하면

향후 LinkedList, Vector 등 다른 구현클래스들로 간단하게 교체할 수 있기 때문이다.

 

참고

2021.05.11 - [IT&프로그래밍/Java] - Java | 업캐스팅, 다운캐스팅, instanceof

 

Java | 업캐스팅, 다운캐스팅, instanceof

업캐스팅 서브클래스 객체를 슈퍼클래스 타입으로 변환하는 것. Person person = new Student(); List<> list = new ArrayList<>(); 자식클래스는 부모클래스를 내포하고 있기 때문에 부모클래스 객체에 넣을 수..

zuyo.tistory.com

 

반응형