오늘은 역사적으로 공부하기 싫어도 하는 날이다 👏👏👏
생성자 | 설명 |
---|---|
HashMap<>() | |
HashMap<>(HashMap인스턴스참조변수) | HashMap인스턴스참조변수의 모든 값을 가진 HashMap생성 |
HashMap<>(10) | 초기 용량(capacity)지정 |
HashMap<>(10, 0.7f) | 초기 capacity,load factor지정 |
메소드 | 설명 |
---|---|
put(key, value) | 주어진 키와 값을 해시 맵에 저장합니다. 이미 같은 키가 존재하는 경우, 기존 값은 새로운 값으로 대체됩니다. |
get(key) | 주어진 키에 해당하는 값을 반환합니다. 키가 존재하지 않을 경우 null을 반환합니다. |
remove(key) | 주어진 키에 해당하는 키-값 쌍을 해시 맵에서 제거합니다. |
containsKey(key) | 주어진 키가 해시 맵에 존재하는지 여부를 확인합니다. |
containsValue(value) | 주어진 값이 해시 맵 내에 존재하는지 여부를 확인합니다. |
size() | 해시 맵에 저장된 키-값 쌍의 개수를 반환합니다. |
isEmpty() | 해시 맵이 비어있는지 여부를 반환합니다. |
keySet() | 해시 맵 내의 모든 키를 포함하는 Set 컬렉션을 반환합니다. |
values() | 해시 맵 내의 모든 값을 포함하는 Collection을 반환합니다. |
entrySet() | 해시 맵 내의 모든 키-값 쌍을 포함하는 Set 컬렉션을 반환합니다. |
putAll(map) | 다른 맵의 모든 키-값 쌍을 현재 해시 맵에 복사합니다. |
clear() | 해시 맵의 모든 키-값 쌍을 제거하여 비웁니다. |
index = hash(key); //index는 저장위치
💡 ir.next()
은 현재 값을 반환하고 다음 값으로 넘어감
package map;
import collection.Member;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
class MemberHashMap {
HashMap<Integer, Member> memberHashMap;
public MemberHashMap() {
memberHashMap = new HashMap<>();
}
public void addMember (Member member) {
memberHashMap.put(member.getMemberId(), member);
}
public Member removerMember(int memberId) {
if (memberHashMap.containsKey(memberId)){
return memberHashMap.remove(memberId);
}
return null;
}
public void memPrintAll () {
Iterator<Integer> ir = memberHashMap.keySet().iterator();
while (ir.hasNext()) {
int key = ir.next();
System.out.println("키 값 : " + key + "\n" + memberHashMap.get(key));
}
}
}
public class HashMapTest {
public static void main(String[] args) {
ArrayList<Member> members = new ArrayList<>();
members.add(new Member(1001,"김이석"));
members.add(new Member(1002,"강현민"));
members.add(new Member(1003,"황연현"));
members.add(new Member(1004,"진권석"));
MemberHashMap memberHashMap = new MemberHashMap();
for (Member member : members) {
memberHashMap.addMember(member);
}
memberHashMap.memPrintAll();
System.out.println(memberHashMap.removerMember(1001));
System.out.println(memberHashMap.removerMember(1007));
}
👉 실행화면
키 값 : 1001
김이석 회원님의 아이디는 1001입니다.
키 값 : 1002
강현민 회원님의 아이디는 1002입니다.
키 값 : 1003
황연현 회원님의 아이디는 1003입니다.
키 값 : 1004
진권석 회원님의 아이디는 1004입니다.
김이석 회원님의 아이디는 1001입니다.
null
Hashtable 클래스 : 멀티스레드를 위한 동기화를 제공한다.
멀티스레드 환경이 아니라면 HashMap 클래스를 권장한다.
key값은 중복이 없으며 key 값으로 자료를 정렬한다.
👉 key값은 중복이 불가능하기 때문에 HashMap 클래스을 사용할 클래스는 eqauls()와 hashcode()를 오버라이딩해야한다.
👉 key 값이 새로 정의한 클래스라면 Comparable 인터페이스와 Comparartor 인터페이스를 구현해야한다.
Comparable 인터페이스와 Comparartor 인터페이스 구현은 전 글에서 상세히 정리했기 때문에 생략하겠다.
생성자 | 설명 |
---|---|
TreeMap() | 빈 TreeMap을 생성합니다. 기본적으로 키의 자연 순서(natural order)에 따라 정렬됩니다. |
TreeMap(Comparator<T> comparator) | 지정된 Comparator를 사용하여 TreeMap을 생성합니다. 이 생성자를 사용하면 키의 정렬 순서를 사용자가 직접 지정할 수 있습니다. |
TreeMap(Map<T,V> map) | 주어진 맵의 모든 키-값 쌍을 가지고 새로운 TreeMap을 생성합니다. |
메소드 | 설명 |
---|---|
put(key, value) | 주어진 키와 값을 TreeMap에 저장합니다. 키가 이미 존재할 경우 기존 값은 새로운 값으로 대체됩니다. 반환 값은 이전 값 또는 null입니다. |
get(key) | 주어진 키에 해당하는 값을 반환합니다. 키가 존재하지 않을 경우 null을 반환합니다. |
remove(key) | 주어진 키에 해당하는 키-값 쌍을 TreeMap에서 제거합니다. 반환 값은 해당 키의 값 또는 null입니다. |
containsKey(key) | 주어진 키가 TreeMap에 존재하는지 여부를 확인합니다. |
size() | TreeMap에 저장된 키-값 쌍의 개수를 반환합니다. |
isEmpty() | TreeMap이 비어있는지 여부를 반환합니다. |
firstKey() | 가장 작은 키를 반환합니다. |
lastKey() | 가장 큰 키를 반환합니다. |
keySet() | TreeMap 내의 모든 키를 포함하는 NavigableSet을 반환합니다. |
values() | TreeMap 내의 모든 값을 포함하는 Collection을 반환합니다. |
entrySet() | TreeMap 내의 모든 키-값 쌍을 포함하는 Set 컬렉션을 반환합니다. |
higherKey(key) | 주어진 키보다 큰 다음 키를 반환합니다. |
lowerKey(key) | 주어진 키보다 작은 이전 키를 반환합니다. |
floorKey(key) | 주어진 키와 같거나 작은 키 중 가장 큰 키를 반환합니다. |
ceilingKey(key) | 주어진 키와 같거나 큰 키 중 가장 작은 키를 반환합니다. |
pollFirstEntry() | 가장 작은 키를 가진 키-값 쌍을 제거하고 반환합니다. |
pollLastEntry() | 가장 큰 키를 가진 키-값 쌍을 제거하고 반환합니다. |
유용하게 써보자~