JAVA

JAVA Collection Framework 3

woohap 2024. 11. 26. 00:48

Map

key와 value로 구성된 Entry 객체 저장 
HashMap, TreeMap, LinkedHashMap 등 다양한 Map 구현체가 내부적으로 Entry 객체를 사용하여 키-값 쌍을 관리
Key 중복 불가능, Value 중복 가능 
순서 없음 
검색에 매우 효율적 
Key, Value, Entry 모두 객체 

**** Map 인터페이스는 Iterable 인터페이스, Collection 인터페이스를 상속받지 않는다.
즉, Iterable, Collection 인터페이스가 제공하는 메서드를 사용할 수 없다.

HashMap

사용자 정의 클래스 객체를 사용할 때 hashCode(), equals() 함수를 반드시 오버라이딩해줘야 한다.
-> 기준 설정 

TreeMap

사용자 정의 클래스 객체를 사용할 때, Comparable 인터페이스를 구현해야한다. 
-> ComparaTo() 메서드를 오버라이딩해야 한다. (기준 설정)

Map< K,V > 메서드 13가지

컬렉션 클래스 계층 구조

put(Key k, Value) : Value

key값과 value 값 한 쌍의 데이터를 Map에 저장한다.
Map에 동일한 key값을 갖는 객체가 있는 경우 그 객체의 value값을 반환하고 새로 들어온 value 값을 저장한다.
-> 없으면 null 반환 
**** key 값은 변경되지 않음 

replace(Key k, Value v) : Value

저장된 객체의 value값을 수정한다.
수정하기 전 value 값을 반환, key에 해당하는 것이 없으면 null 반환 
** key 값은 변경되지 않는다. 

containsKey(Object key) : boolean

Map에 저장된 요소 중 일치하는 key 값이 존재하는지 확인 
존재하면 true, 없으면 false 반환 

containsValue(Object value) : boolean

Map에 저장된 요소 중 일치하는 value 값이 존재하는지 확인 
존재하면 true, 없으면 false 반환 

isEmpty() : boolean

Map이 비어있으면 true, 비어있지 않으면 false 반환 

size() : int

Map의 크기를 반환한다.

get(Object key): Value

Map에서 key에 해당하는 value 값을 반환한다. 없으면 null 반환 

keySet(): Set< Key >

Map의 모든 키를 Set<Key>로 만들어 반환 

entrySet(): Set< Map.Entry< Key,Value >

Map의 모든 Map.Entry<Key,Value> 객체를 Set으로 만들어 반환한다.

values() : Collection< Value >

Map의 모든 value 값을 Collection< Value >으로 만들어 반환 

remove(Object key, Object value): boolean

Map에 Key와 Value값이 동일한 객체를 삭제한다.
삭제했다면 true, 못했다면 false 반환 

remove(Object key) : Value

Map에서 key에 해당하는 요소를 삭제한다.
삭제한 value 값을 반환한다.

clear() : void

Map의 모든 요소를 제거한다.

모든 요소에 접근 KeySet(), entrySet()

Map은 iterator() 직접 호출이 불가능하므로 Set으로 변환한 뒤 iterator() 호출
keySet() - for-each, Iterator<E>
entrySet() - for-each, Iterator<E>
import java.util.*;

public class Example {
    public stativ void main(String[] args) {
        Map<String, Integer> map = new HashMap<>;
        map.put("kim", 10);
        map.put("lee", 20);
        map.put("park",30);

        for(Map.Entry<String, Integer> entry : map.entrySet()) {
            System.out.println("Key: " + entry.getKey()+ " | " + "Value" + entry.getValue());
        }
    }
 }

Stack 클래스

vector 클래스를 상속하므로 Vector의 메서드 모두 사용 가능 
- 하지만 Stack 구조를 사용하려면 Stack에서 제공하는 메서드를 사용하는게 좋음 
** E은 element를 의미 (지네릭)

push(E e) : E

스택에 객체 저장 
스택에 저장한 객체를 반환 

pop() : E

스택에 마지막으로 저장된 객체를 꺼내서 반환 
비어있으면 Exception 발생 

Queue 인터페이스

Queue > Deque > LinkedList
- LinkedList는 List를 상속하지만 Queue를 사용하고 싶으면 Queue와 Deque가 정의된 메서드를 사용하는게 좋다.

Offer(E e) : boolean

Queue에 객체를 저장
저장 성공시 true 반환
저장 실패시 false 반환 

poll() : E

Queue에 첫 번째로 저장되어 있는 객체를 반환 
비어 있으면 null 반환 

Stack과 Queue에 저장된 요소를 반복문으로 꺼내기

for, for-each 사용 안 됨 
-> 크기가 변경되기 때문
while(!stack.isEmty()){
    System.out.println(stack.pop());
}

'JAVA' 카테고리의 다른 글

Object 클래스의 메서드  (0) 2024.12.04
객체지향 프로그래밍 1  (0) 2024.11.27
JAVA Collection Framework 2  (0) 2024.11.25
JAVA Collection Framework 1  (0) 2024.11.24