[Java] Hash Map

수박이삼촌·2024년 1월 22일
0

Java

목록 보기
13/21
post-thumbnail

Hash Map

package main;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.TreeMap;

public class MainClass {
	public static void main(String[] args) {
		/*
		 	Collection(수집)
		 	
		 	1.
		 	ArrayList<object>, LinkedList (CRUD)
		 	검색					실시간 추가/삭제
		 	
		 	
		 	2.
		 	HashMap(java) == Json(web) 트리 구조
			 	-> 사전
			 	key:value - pair
			 	사과:apple
			 	
			 	key 값은 중복이 되지 않는다.
			 	Tree 구조
		 	
		 	TreeMap : HashMap + sorting(key)
		 		TreeMap이 무거워 HashMap 선호
		 */
		
		// HashMap 호출 방법
		// 클래스 호출 방법
	//	HashMap<Integer, String> hMap = new HashMap<Integer, String>();
		
		// 인터페이스 호출 방법
		Map<Integer, String> hMap = new HashMap<Integer, String>();
		
		// 추가
		hMap.put(101, "Lions");
		hMap.put(102, "Tigers");
		hMap.put(103, "Bears");
		hMap.put(104, "Twins");
		hMap.put(105, "Landers");
		
		// 중복 허용x
		hMap.put(102, "Giants");	// 이전 값 삭제 됨.
		
		System.out.println(hMap.size());
		
		// 모두 출력
		// iterator : 반복자(== 포인터(주소)) == cursor
		Iterator<Integer> it = hMap.keySet().iterator();
		while(it.hasNext()) { // 그 다음 데이터 있니?
			Integer key = it.next();
			String value = hMap.get(key);
			System.out.println(key + ":" + value);
		}
		
		// 삭제
		String deleteVal = hMap.remove(104);
		System.out.println("삭제된 value:" + deleteVal);
		
		// 검색
		//	   value			key
		String value = hMap.get(101);
		
		boolean b = hMap.containsKey(102);
		if(b == true) {
			String val = hMap.get(102);
			System.out.println("value:" + val);
		}
		
		// 수정
		hMap.replace(103, "Eagles");
		
		it = hMap.keySet().iterator();
		while(it.hasNext()) { // 그 다음 데이터 있니?
			Integer key = it.next();
			String val = hMap.get(key);
			System.out.println(key + ":" + val);
		}
		
		// HashMap의 장(강)점
		String str = "Hello";
		Integer in = 123;
		ArrayList<String> list = new ArrayList<String>();
		
		Map<String, Object> map = new HashMap<String, Object>();
		
		// 데이터 타입에 구분 짓지 않고 삽입 가능, 번지 수를 찾아야 하는 List와 달리 키 값만으로 value 값 확인 가능 
		map.put("문자열", str);
		map.put("숫자", in);
		map.put("목록", list);
		
		// 키값 = Object, Value = Object
	//	Map<Object, Object> map = new HashMap<String, Object>(); // 키값 데이터 타입이 없어 value 확인이 더 어렵다.
		
		
		/* Quiz */
		// 과일 5개를 map에 추가하고 crud
		// String(key), String(key)
		Map<String, String> fruit = new HashMap<String, String>();
		
		// 추가
		fruit.put("apple", "사과");
		fruit.put("plum", "자두");
		fruit.put("banana", "바나나");
		fruit.put("grape", "포도");
		fruit.put("pear", "배");
		
		// 전체 보기
		Iterator<String> is = fruit.keySet().iterator();
		while(is.hasNext()) { // 그 다음 데이터 있니?
			String key = is.next();
			String val = fruit.get(key);
			System.out.println("key:" + key + "val:" + val);
		}
		
		// 삭제
		fruit.remove("grape");
		
		// 검색
		boolean b1 = fruit.containsKey("peach");
		if (b1 == true) {
			System.out.println("해당 키 값이 존재합니다..");
		} else {
			System.out.println("해당 키 값이 존재하지 않습니다.");
			fruit.put("peach", "복숭아");
		}
		
		// 수정
		fruit.replace("pear", "나주배");
		is = fruit.keySet().iterator();
		while(is.hasNext()) { // 그 다음 데이터 있니?
			String key = is.next();
			String val = fruit.get(key);
			System.out.println("key:" + key + "val:" + val);
		}
		
		
		// TreeMap
		TreeMap<String, String> tMap = new TreeMap<String, String>(fruit);
		
		// 오름차순
	//	Iterator<String> it2 = tMap.keySet().iterator();
		
		// 내림차순
		Iterator<String> it2 = tMap.descendingKeySet().iterator();
		
		while(it2.hasNext()) {
			String k = it2.next();
			String v = tMap.get(k);
			System.out.println("TreeMap key:" + k + "Value:" + v);
		}
		
		// original data는 변경되지 않는다.
		Iterator<String> it1 = fruit.keySet().iterator();
		while(it1.hasNext()) {
			String key = it1.next();
			String v = fruit.get(key);
			System.out.println("TreeMap key:" + key + "Value:" + v);
		}
	} // end main method 
}
profile
Today I Learned

0개의 댓글