YSHUSH

Hash map 본문

Coding/Java

Hash map

코딩; 2021. 12. 20. 03:54
public class MainClass {

	public static void main(String[] args) {
		/*
		  	ArrayList : 검색, 대입
		  	
		 	LinkedList : 실시간 추가 / 삭제 처리가 빠르다
		 */
		
		LinkedList<String> list = new LinkedList<String>();
		
		list.add("Tigers");
		list.add(new String("Lions"));
		list.add("Giants");
		
		for (String s : list) {
			System.out.println(s);
		}
		
		list.addFirst("Bears"); // = list.add(0, "Bears");
					// ArrayList에는 없음
		
		ArrayList<String> alist = new ArrayList<String>(list);
		
		for (String str : alist) {
			System.out.println(str);
		}
		
		System.out.println( list.get(0) );
		
		String ss = "Twins";
		list.set(2, ss);
		
		for (String str : list) {
			System.out.println(str);
		}
		
		
		/*
		 	Map :	사전
		 		 HashMap
		 		 	Key : value -> 한쌍(Pair)
		 			"사과" : "apple"
		 			key값으로 관리한다.
		 			Tree 구조
		 				
		 		 TreeMap
		 			 HashMap + sorting 이 지원되어 HashMap에 비해서는 무거운 편
		 			 Hash맵을 쓰다가 sorting이 필요할 때 값을 넣어서 TreeMap을 쓸 수 있음
		 		 		
		 		 
		 	// List 같은 경우는 선형구조를 가지고 있으나 Map은 tree(나무)구조이다.	 
		 */
		
	//	HashMap<Integer, String> hMap = new HashMap<Integer, String>();
		Map<Integer, String> hMap = new HashMap<Integer, String>();
		
		// 추가 -> for문 사용 안하는 이유는 순서가 없기 때문이고 메모리 안에서 순서가 정렬되지 않음.
		hMap.put(111, "백십일");
		hMap.put(222, "이백이십이");
		hMap.put(333, "삼백삼십삼");
		
		String value = hMap.get(333);
//								  ↑ 키값을 집어넣음
		System.out.println(value);
		
		// iterator == 반복자(주소) -> 포인터
		Iterator<Integer> it = hMap.keySet().iterator();	// 제일 첫번째 주소를 가지고 와라
															// 지금 상황에선 111, 222, 333중 아무나 올 수 있음
															// 데이터를 집어넣을 때마다 순번이 바뀌기 때문이다.
		while(it.hasNext()) {	// .hasNext() -> 다음거 있니?	
			Integer k = it.next();	// Iterate 내의 next함수를 사용하면 키값을 다 꺼내올 수 있다.
			System.out.println(k);
			
			String v = hMap.get(k);
			System.out.println(v);
		}
		

		// 삭제
		value =  hMap.remove(222);
		System.out.println("삭제된 데이터: " + value);
		
		it = hMap.keySet().iterator();	// 갱신 -> 처음으로 돌아가라!
		while(it.hasNext()) {		
			
			String v = hMap.get(it.next());
			System.out.println(v);
		}
		
		System.out.println(hMap.size());
		
		
		// 검색(= key값으로 검색)
		boolean b = hMap.containsKey(333);
		if(b == true) {
			String v = hMap.get(333);
			System.out.println(v + " 삭제되었습니다.");
		}
		

		// 수정
		hMap.replace(111, "백 + 십 + 일");
		System.out.println(hMap.get(111));
		
		hMap.put(111, "100 + 10 + 1");
		System.out.println(hMap.get(111));
		
		
		// sorting -> key값으로
		Map<String, String> map = new HashMap<String, String>();
		
		map.put("pear", "배");
		map.put("apple", "사과");
		map.put("grape", "포도");
		map.put("banana", "바나나");
		map.put("orange", "오렌지");
		
		Iterator<String> it1 = map.keySet().iterator();
		
		while(it1.hasNext()) {
			String k = it1.next();	// -> 다음 주소를 불러라
			String v = map.get(k);
			
			System.out.println("key: " + k + " value: " + v);
		}
		System.out.println();
		
		
		// TreeMap
		TreeMap<String, String> tmap = new TreeMap<String, String>( map );
		
		// 오름차순 처리
	//	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("key: " + k + " value: " + v);
		}		
	}
}

'Coding > Java' 카테고리의 다른 글

Array list 2  (0) 2021.12.20
Array list  (0) 2021.12.20
Generic  (0) 2021.12.20
Static  (0) 2021.12.17
Final  (0) 2021.12.17