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 |