안녕하세요, 코린이의 코딩 학습기 채니 입니다.
개인 포스팅용으로 내용에 오류 및 잘못된 정보가 있을 수 있습니다.
컬렉션이란?
- 동일한 타입을 묶어 관리하는 자료 구조
컬렉션 프레임워크란?
- 리스트, 스택, 큐, 트리 등의 자료구조에 정렬, 탐색 등의 알고리즘을 구조화해 놓은 프레임워크
- 여러 개의 데이터 묶음 자료를 효과적으로 처리하기 위해 구조화된 클래스 또는 인터페이스의 모음
컬렉션의 특성에 따라 구분하면 크게 List<E>, Set<E>, Map<K, V>로 나뉩니다.
메모리의 입출력 특성에 따라 기존 컬렉션 기능을 확장/조합한 Stack<E>, Queue<E>도 있습니다.(사진에선 누락)
☞ Set<E> 컬렉션 프레임워크
- 인덱스 정보를 포함하고 있지 않은, 집합의 개념
- 순서를 유지하지 않고 저장
- 중복 허용 하지 않음
- Null 값도 중복을 허용 하지 않으므로 하나의 Null 값만 저장
Set<E>의 주요 메소드 (인덱스 관련 메소드 X)
구분 | 리턴타입 | 메소드명 | 기능 |
데이터 추가 | boolean | add(E element) | 매개변수로 입력된 원소를 리스트에 추가 |
boolean | addAll(Collection<? Extends E> c) | 매개변수로 입력된 컬렉션 전체를 추가 | |
데이터 삭제 | boolean | removed(Object o) | 원소 중 매개변수 입력과 동일한 객체 삭제 |
void | clear() | 전체 원소 삭제 | |
데이터 정보 추출 |
boolean | isEmpty() | Set<E> 객체가 비어 있는 지 여부를 리턴 |
boolean | contains(Object o) | 매개변수로 입력된 원소가 있는지 여부를 리턴 | |
int | size() | 리스트 객체 내에 포함된 원소의 개수 | |
Iterator<E> | iterator() | Set<E> 객체 내의 데이터를 연속해 꺼내는 Iterator 객체 리턴 |
|
Set<E> 객체 배열 변환 |
Object[] | toArray() | 리스트를 Object 배열로 변환 |
T[] | toArray(T[] t) | 입력매개변수로 전달한 타입의 배열로 변환 |
☞ LinkedHashSet<E>
- 기본적으로 HashSet<E>가 동일
- 다만 추가되는 순서를 유지해줌
HashSet<E> 출력 - 입력 순서를 유지하지 않음
Set<Student> set = new HashSet<>();
set.add(new Student(2, "신사임당"));
set.add(new Student(1, "홍길동"));
set.add(new Student(3, "장보고"));
System.out.println(set);
@콘솔출력값
[Student [no=3, name=장보고], Student [no=1, name=홍길동], Student [no=2, name=신사임당]]
HashSet<E>은 입력 순서를 유지해주지 않기 때문에 입력한 순서와 출력되는 순서가 상이합니다.
LinkedHashSet<E> 출력 - 입력 순서 유지
//Set<Student> set = new HashSet<>();
Set<Student> set = new LinkedHashSet<>();
set.add(new Student(2, "신사임당"));
set.add(new Student(1, "홍길동"));
set.add(new Student(3, "장보고"));
System.out.println(set);
@콘솔출력값
[Student [no=2, name=신사임당], Student [no=1, name=홍길동], Student [no=3, name=장보고]]
그에 비해 LinkedHashSet<E>은 HashSet<E>의 특성 + 입력 순서 유지 기능이 추가 된 것으로, 입력 순서가 유지되어 출력되는 것을 확인할 수 있습니다.
※ 단, 입력 순서의 정보는 갖고 있지만, List<E>처럼 인덱스를 이용하여 중간에 데이터를 추가하거나 값을 가져오는 것은 불가능!!
이 외 사용 방법이 HashSet<E>과 동일하기 때문에 따로 실습 하진 않겠습니다.
HashSet<E> 참고 링크
https://chanychu.tistory.com/135?category=959041
'Java > Java' 카테고리의 다른 글
컬렉션/Map<K, V>) HashMap<K, V>, 주요 메소드 (0) | 2022.04.02 |
---|---|
컬렉션/Set<E>) TreeSet<E>, 주요 메소드, 크기 비교 (0) | 2022.04.01 |
컬렉션/Set<E>) HashSet<E>, 주요 메소드, 중복 제거 (0) | 2022.03.31 |
컬렉션/List<E>) Queue<E>, 주요 메소드 (0) | 2022.03.31 |
컬렉션/List<E>) Stack<E>, 주요 메소드 (0) | 2022.03.31 |