728x90

컬렉션

여러 객체(데이터)를 모아놓은 것을 의미

 

프레임웍

표준화 정형화된 체계적인 프로그래밍 방식

 

컬렉션 프레임웍

컬렉션(다수의 객체)을 다루기 위한 표준화된 프로그래밍 방식

컬렉션을 쉽고 편리하게 다룰 수 있는 다양한 클래스를 제공

java.util 패키지에 포함

 

1. List

순서가 있는 데이터의 집합. 데이터의 중복을 허용한다.

구현 클래스 : ArrayList, LinkedList, Stack, Vector 등

2. Set

순서를 유지하지 않는 데이터의 집합. 데이터의 중복을 허용하지 않는다.

구현 클래스 : HashSet, TreeSet 등

3. Map

키와 값의 쌍으로 이루어진 데이터의 집합

순서는 유지되지 않으며, 키는 중복을 허용하지 않고, 값은 중복을 허용한다.

구현 클래스 : HashMap, TreeMap, HashTable, Propertise 등

 

ArrayList

ArrayList는 기존의 Vector를 개선한 것으로 구현원리와 기능적으로 동일

ArrayList와 달리 Vector는 자체적으로 동기화 처리가 되어있다.

List인터페이스를 구현하므로, 저장순서가 유지되고 중복을 허용한다.

데이터의 저장공간으로 배열을 사용한다.

 

ArrayList에 저장된 객체의 삭제과정

  1. 삭제할 데이터 아래의 데이터를 한 칸씩 위로 복사해서 삭제할 데이터를 덮어쓴다.
  2. 데이터가 모두 한 칸씩 이동했으므로 마지막 데이터는 null로 변경한다.
  3. 데이터가 삭제되어 데이터의 개수가 줄었으므로 size를 감소시킨다.

배열의 장점

배열은 구조가 간단하고 데이터를 읽는 데 걸리는 시간이 짧다

배열의 단점

크기를 변경할 수 없다. 크기를 변경해야 하는 경우 새로운 배열을 생성 후 데이터를 복사해야 함

비순차적인 데이터의 추가, 삭제에 시간이 많이 걸린다.

 

LinkedList 

배열과 달리 LinkedList는 불연속적으로 존재하는 데이터를 연결

데이터의 삭제 : 단  한 번의 참조 변경만으로 가능

데이터의 추가 : 한 번의 Node객체 생성과 두 번의 참조 변경만으로 가능

순차적으로 데이터 추가/삭제 : ArrayList가 빠름

비순차적으로 데이터 추가/삭제 : LinkedList가 빠름

접근 시간 : ArrayList가 빠름

 

Comparable : 기본 정렬 기준을 구현하는데 사용

Comparator : 기본 정렬기준 외의 다른 기준으로 정렬하고자 할 때 사용

compare()와 compareTo()는 두 개체의 비교 결과를 반환하도록 작성 

 

HashSet

set인터페이스를 구현한 대표적인 컬렉션 클래스

순서를 유지하려면, LinkedHashSet클래스를 사용하면 된다.

 

TreeSet

범위 검색과 정렬에 유리한 컬렉션 클래스

HashSet보다 데이터 추가, 삭제에 시간이 더 걸림

728x90

+ Recent posts