package hash;
public class MyHash {
public Slot[] hashTable; // 해쉬 테이블을 담는 공간
public MyHash(Integer size){ // 해쉬 테이블의 크기를 정하는 함수
this.hashTable = new Slot[size];
}
public class Slot{
String value;
Slot(String value){ // 생성자
this.value = value;
}
}
public Integer hashFunction(String key){
return (int)(key.charAt(0) % this.hashTable.length); // 해시 테이블의 길이의 맞는 key 값을 반환
}
public boolean saveData(String key , String value){
Integer address = this.hashFunction(key); // 위에 선언한 해시 function을 통해 key를 가져오고
if (this.hashTable[address] != null){ // key에 해당하는 value가 존재하지 않은 경우
this.hashTable[address].value = value; // 기존의 값을 변경
}else{ // key에 해당하는 value가 존재하는 경우
this.hashTable[address] = new Slot(value); // 새로운 값을 추가
}
return true;
}
public String getData(String key){
Integer address = this.hashFunction(key);
if(this.hashTable[address]!= null){
return this.hashTable[address].value; // 현재 존재하는 해쉬 테이블의 값을 리턴
}else{
return null;
}
}
}
장점
package hash;
import java.util.HashMap;
public class HashMap1 {
public static void main(String[] args) {
HashMap<String , Integer> hashMap = new HashMap<>(); // HashMap<Key,Value>으로 선언하고 Key와 Value의 타입을 지정해 줘야 한다.
}
}
HashMap.put(K key , V value)
void putAll(Map <?extends K , ?extends V>m
V putIfAbsent
package hash;
import java.util.HashMap;
import java.util.Map;
public class HashMap1 {
public static void main(String[] args) {
HashMap<String , Integer> hashMap = new HashMap<>(); // HashMap<Key,Value>으로 선언하고 Key와 Value의 타입을 지정해 줘야 한다.
Map<String,Integer> map = new HashMap<>();
// add
hashMap.put("user1" , 111);
hashMap.put("user2" , 112);
hashMap.put("user3" , 113);
map.put("user4",114);
map.put("user5",115);
map.put("user6",116);
hashMap.putAll(map);
hashMap.putIfAbsent("user7",117); // 해당 key가 없는 경우에 추가
}
}
clear
package hash;
import java.util.HashMap;
import java.util.Map;
public class HashMap1 {
public static void main(String[] args) {
HashMap<String , Integer> hashMap = new HashMap<>(); // HashMap<Key,Value>으로 선언하고 Key와 Value의 타입을 지정해 줘야 한다.
Map<String,Integer> map = new HashMap<>();
// insert
hashMap.put("user1" , 111);
hashMap.put("user2" , 112);
hashMap.put("user3" , 113);
map.put("user4",114);
map.put("user5",115);
map.put("user6",116);
hashMap.putAll(map);
hashMap.putIfAbsent("user7",117); // 해당 key가 없는 경우에 추가
// delete
hashMap.remove("user1"); // key에 해당하는 값을 삭제
System.out.println(hashMap.remove("user2" , 112)); // key랑 value가 둘다 일치하는 값 삭제후 성공하면 true 리턴
System.out.println(hashMap.remove("user8" , 112)); // false 리턴
hashmap.clear(); // map에 존재하는 모든 값 삭제
}
}
replace(K key , V value)
// update
hashMap.replace("user3" , 119);
hashMap.replace("user4" , 114 , 120);
boolean containsKey(Object key)
hashMap.put("user1" , 111);
hashMap.put("user2" , 112);
hashMap.put("user3" , 113);
hashMap.put("user4" , 114);
hashMap.put("user5" , 115);
hashMap.put("user6" , 116);
System.out.println(hashMap.containsKey("user1"));
System.out.println(hashMap.containsKey("user0"));
System.out.println(hashMap.containsValue(111));
System.out.println(hashMap.containsValue(110));
System.out.println(hashMap.isEmpty());
System.out.println(hashMap.size());
V get(Object key)
V getOrDefault(Object key , V defaultValue)
Set<Map.Entry<K,V>> entrySet()
Set keySet()
Collection values
// get
System.out.println(hashMap.get("user1"));
System.out.println(hashMap.getOrDefault("user10",999));
Set<Map.Entry<String, Integer>> data = hashMap.entrySet();
System.out.println(data); // key-value를 set으로 리턴
System.out.println(hashMap.keySet()); // 키만 리턴
System.out.println(hashMap.values()); // 값만 리턴