hyeonga_code

Java의 신2_Chapter 5_Collection Set Queue 본문

Java

Java의 신2_Chapter 5_Collection Set Queue

hyeonga 2024. 4. 2. 08:59
반응형

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