hyeonga_code
Java의 신2_Chapter 5_Collection Set Queue 본문
2024.04.01
- 셋_Set
-- 순서에 상관 없이 데이터가 존재하는지를 확인하기 위한 용도로 사용된다.
-- 중복되는 것을 방지한다.
-- 원하는 값이 포함되어 있는지를 확인한다.
HashSet
// 순서가 필요 없는 데이털를 해시테이블에 데이터 저장
// 성능이 가장 좋다
TreeSet
// 저장된 데이터의 값에 따라 정렬되는 셋
// red-black 트리타입으로 값이 저장
LinkedHashSet
// 연결된 목록 타입으로 구현된 해시 테이블에 데이터 저장
// 저장된 순서에 따라 값이 정렬
-- HashSet
java.lang.Object
ㄴ java.util.AbstractCollection<E>
ㄴ java.util.AbstractSet<E>
ㄴ java.util.HashSet<E>
- Serializable // 원격으로 객체를 전송하거나 파일에 저장할 수 있음을 지정
- Cloneable // Object 클래스의 clone() 메소드가 수행될 수 있음을 지정(복사 가능 객체)
- Iterable<E> // foreach 를 사용할 수 있는 객체임을 지정
- Collection<E> // 여러 개의 객체를 하나의 객체에 담아 처리할 때의 메소드를 지정
- Set<E> // 셋 데이터를 처리하는 것과 관련된 메소드 지정
-- 생성자
HashSet()
// 데이터를 저장할 수 있는 16개의 공간과 0.75의 로드 팩터를 갖는 객체를 생성
HashSet(Collection< ? extends E > c)
// 매개변수로 받은 컬렉션 객체의 데이터를 HashSet에 담는다.
HashSet(int initialCapacity)
// 매개변수로 받은 개수만큼의 데이터 저장 공간과 0.75의 로드 팩터를 갖는 객체를 생성
HashSet(int initialCapacity, float loadFactor)
// 첫 매개변수 만큼의 데이터 저장 공간과 두 번째 매개변수 만큼의 로드팩터를 갖는 객체를 생성
---- 로드팩터_Load Factor
------ 데이터의 개수 / 저장 공간
------ 로드팩터보다 데이터의 개수가 많은 경우 저장 공간의 크기가 증가하고 해시 재정리 작업_refresh를 해야한다.
------ 해지 재정리 작업 시, 내부에 갖고 있는 자료 구조를 다시 생성하는 단계가 필요하여 성능에 영향이 발생한다.
------ 값이 클수록 공간은 넉넉해지지만 데이터를 찾는 시간이 증가한다.
------ 초기 크기가 데이터개수/로드팩터 보다 큰 경우 데이터를 쉽게 찾기 위한 해시 재정리 작업이 발생하지 않는다.
-- 메소드
boolean add(E e)
// 데이터를 추가
void clear()
// 모든 데이터 삭제
Object clone()
// HashSet 객체를 복제하지만 데이터는 복제하지 않는다.
boolean contains(Object o)
// 지정한 객체가 존재하는지 확인
boolean isEmpty()
// 데이터가 있는지 확인
Iterator<E> iterator()
// 데이터를 꺼내기 위한 Iterator 객체를 리턴
boolean remove(Object o)
// 매개 변수로 넘어온 객체를 삭제
int size()
// 데이터의 개수를 리턴
---- 저장되어 있는 값을 꺼내는 방법은 for문을 사용하는 것이 일반적이다.
---- iterator() 메소드로 객체를 생성하여 출력할 수 있다.
import java.util.Iterator;
Iterator<String> iterator = set.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
- 큐_Queue
-- FIFO : 먼저 들어온 것이 먼저 나간다.
-- Deque_Double Ended Queue
----- 맨 앞에 값을 넣거나 빼고, 맨 뒤에 값을 넣거나 뺄 수 있다.
- LinkedList
java.lang.Object
ㄴ java.util.AbstractCollection<E>
ㄴ java.util.AbstractList<E>
ㄴ java.util.AbstractSequentialList<E>
ㄴ java.util.LinkedList<E>
- Serializable // 원격으로 객체를 전송하거나 파일에 저장할 수 있음을 지정
- Cloneable // Object 클래스의 clone() 메소드가 수행될 수 있음을 지정
- Iterable<E> // foreach 를 사용할 수 있는 객체임을 지정
- Collection<E> // 여러 개의 객체를 하나의 객체에 담아 처리할 때의 메소드를 지정
- Deque<E> // 맨 앞과 맨 뒤의 값을 용이하게 처리하는 쿠와 관련된 메소드 지정
- List<E> // 목록형 데이터를 처리하는 것과 관련된 메소드 지정
- Queue<E> // 큐를 처리하는 것과 관련된 메소드 지정
-- 생성자
LinkedList()
// 비어 있는 LinkedList 객체를 생성
LinkedList(Collection< ? extends E > c)
// 매개변수로 넘어온 컬렉션 객체의 데이터를 LinkedList 객체에 담는다.
-- 메소드
void addFirst(Object)
boolean offerFirst(Object)
void push(Object)
boolean add(Object)
// LinkedList 객체의 가장 앞에 데이터를 추가
void addLast(Object)
boolean offer(Object)
boolean offerLast(Object)
// LinkedList 객체의 맨 뒤에 데이터를 추가
void add(int, Object)
// LinkedList 객체의 특정 위치에 데이터를 추가
Object set(int, Object)
// LinkedList 객체의 특정 위치에 있는 데이터를 수정하고, 기존의 데이터를 리턴
boolean addAll(Collection)
// 매개변수로 넘어온 컬렉션의 데이터를 추가
boolean addAll(int, Collection)
// 매개변수로 넘어온 컬렉션의 데이터를 지정한 위치에 추가
---- add가 붙은 메소드를 사용하는 것이 오해의 소지가 가장 적다.
-- 데이터 꺼내기
Object getFirst()
Object peekFirst()
Object peek()
Object element()
// LinkedList 객체의 맨 앞에 있는 데이터를 리턴
Object getLast()
Object peekLast()
// LinkedList 객체의 맨 뒤에 있는 데이터를 리턴
Objet get(int)
// LinkedList 객체의 지정 위치에 있는 데이터를 리턴
-- 포함 여부 확인
boolean contains(Object)
// 매개변수로 넘어온 데이터가 있을 경우 true 리턴
int indexOf(Object)
// 매개변수로 넘어온 데이터의 위치를 앞에서부터 검색하여 리턴
// 없는 경우 -1
int lastIndexOf(Object)
// 매개변수로 넘어온 데이터의 위치를 뒤에서부터 검색하여 리턴
// 없는 경우 -1
-- 데이터 삭제
Object remove()
Object removeFirst()
Object poll()
Object pollFirst()
Object pop()
// 객체의 가장 앞에 있는 데이터를 삭제하고 리턴
Object pollLast()
Object removeLast()
// 객체의 가장 끝에 있는 데이터를 삭제하고 리턴
Objcet remove(int)
// 매개변수에 지정된 위치에 있는 데이터를 삭제하고 리턴
boolean remove(Object)
boolean removeFirstOccurence(Object)
// 매개변수로 넘어온 객체와 동일한 데이터 중 앞에서부터 가장 처음에 발견된 데이터를 삭제
boolean removeLastOccurence(Object)
// 매개변수로 넘어온 객체와 동일한 데이터 중 끝에서부터 가장 처음에 발견된 데이터를 삭제
---- 맨 앞에 있는 데이터를 삭제하는 메소드는 모두 removeFirst() 메소드를 내부적으로 호출
---- 맨 뒤에 있는 데이터를 삭제하는 메소드는 모두 removeLast() 메소드를 내부적으로 호출
-- 객체를 하나씩 검색하기 위한 메소드
ListIterator listIterator(int)
// 매개변수에 지정된 위치부터의 데이터를 검색하기 위한 ListIterator 객체를 리턴
Iterator descendingIterator()
// 데이터를 끝에서부터 검색하기 위한 Iterator 객체를 리턴
---- ListIterator
------ Iterator 인터페이스가 다음 데이터만을 검색할 수 있다는 단점을 보완
------ previous() 메소드를 사용하여 이전 데이터도 검색할 수 있다.
'Java' 카테고리의 다른 글
Java의 신2_Chapter 7_Thread (0) | 2024.04.03 |
---|---|
Java의 신2_Chapter 6_Collection Map (0) | 2024.04.03 |
Java의 신2_Chapter 4_Collection List (0) | 2024.04.02 |
Java의 신2_Chapter 3_Generic (0) | 2024.04.02 |
Java의 신2_Chapter 2_ java.lang 패키지 (0) | 2024.04.02 |