-
컬렉션 자료구조(Collection Data Structure)JAVA 2023. 3. 2. 21:45
컬렉션 프레임워크 : 자바는 통용되는 자료구조를 기반으로 객체들을 효율적으로 추가, 삭제, 검색할 수 있는 인터페이스 및 클래스를 지원하며, 이를 컬렉션 프레임워크(Collection Framework)라고 부른다.
- 컬렉션 관련 인터페이스와 클래스는 java.util 패키지에 포함되어 있다.
배열과의 비교
배열의 특징
- 같은 타입만 저장 가능
- 길이를 변경할 수 없다.
- 배열의 길이를 변경하려면 배열 복사를 이용해야 한다.
- 컬렉션 자료구조는 길이가 고정되어 있지 않고, 다른 타입의 객체도 저장 가능하다.(그러나 보통 동일한 타입만 저장함)
- Set과 List는 Collection 인터페이스를 상속받으며, Collection 인터페이스를 이용하여 자료구조를 구현할 수 있다.
- Set과 List의 구조 상 객체의 추가, 삭제, 검색하는 데에 공통점이 존재하기 때문에 이를 Collection 이라는 상위 인터페이스에 정의하여 사용한다.
Set
- 중복된 데이터를 허용하지 않음..
- null도 한 번만 저장 가능 - 저장 순서를 기억하지 않고 객체를 저장.
주요 메소드
메소드 설명 add(E e) 마지막 인덱스의 다음 인덱스로 객체를 저장하는 메소드 remove(Object o) 특정 객체를 삭제하고 삭제한 결과가 존재하면 true,
특정 객체가 존재하지 않으면(삭제한 게 없으면) false를 리턴iterator() 반복자 호출 clear() 저장된 객체를 모두 삭제
HashSet
- HashSet 생성 방법
Set<E> set = new HashSet<E>();Set<E> set = new HashSet<>();Set set = new HashSet();- hashCode()와 equals()로 동등 객체 유무를 확인하여 존재하면 저장하지 않고, 없을 때만 저장한다.
List
- 중복된 데이터 허용
- 저장 순서 유지
- List 인터페이스는 제네릭 타입이다.
주요 메소드
메소드 설명 add(E e) 마지막 인덱스의 다음 인덱스로 객체를 저장하는 메소드 clear() 저장된 객체를 모두 삭제 remove(int index) 특정 인덱스의 객체를 삭제하고 지운 객체를 리턴 remove(Object o) 특정 객체를 삭제하고 삭제한 결과가 존재하면 true,
특정 객체가 존재하지 않으면(삭제한 게 없으면) false를 리턴get(int index) 특정 인덱스의 객체를 호출
ArrayList
- 객체의 번지가 저장되고, 실제 메모리에 저장된 객체는 하나이다.
- ArrayList 생성 방법
List<E> list = new ArrayList<E>(); // E에 저장된 타입의 객체만 저장List<E> list = new ArrayList<>();List list = new ArrayList(); //모든 타입의 객체를 저장- 중간에 저장된 객체가 삭제되면 그 자리를 비워두지 않고 뒤에 있던 객체가 삭제된 인덱스(바로 전의 인덱스)로 당겨진다.
- 계속 동일한 인덱스의 객체를 삭제할 수 있다.
Vector
- 동기화된(Synchronized) 메소드로 구성되어 있다.
- 하나의 스레드가 Vector를 사용 중에는 다른 스레드가 해당 Vector를 실행할 수 없다. (동시 실행 불가) - 멀티스레드 환경에서 사용하는 경우에는 ArrayList보다 Vector가 더 안전하게 사용할 수 있다.
- 다른 스레드가 해당 Vector 조작을 할 수 없기 떄문
LinkedList
- 인접 객체를 체인처럼 연결해서 관리하는 리스트
- 중간에 객체를 삭제/삽입할 때 좀 더 좋은 성능을 가진다.
- ArrrayList와 LinkedList에 객체를 추가하는 시간을 측정해보면 LinkedList를 사용했을 때가 더 적은 시간이 소요된다.
Map
- 데이터를 키(key)와 값(value) 쌍으로 저장
- 키는 중복 저장을 허용하지 않는다.
- 구현 클래스
- HashMap, Hashtable. TreeMap, Properties
Iterator(반복자)
Iterator<E> 객체를 리턴
Iterator<E> iterator = set.iterator(); //Set의 iterator() 메소드로 반복자 객체 생성
주요 메소드
메소드 설명 hasNext() 가져올 다음 객체가 존재하는지 확인 next() 다음 객체를 리턴 remove() Set의 객체를 삭제 'JAVA' 카테고리의 다른 글
중첩 클래스(Nested Class)와 중첩 인터페이스(Nested Interface) (0) 2023.03.10 제네릭(Generic) (0) 2023.03.02 Java 표준 라이브러리 (0) 2023.03.02 예외 처리(Exception) (0) 2023.03.02 싱글톤(Singleton) 패턴 (0) 2023.03.02