KDT/Java

240404 Java - 컬렉션 프레임워크 4

001cloudid 2024. 4. 4. 17:40
728x90

컬렉션 프레임워크

Map

  • key와 Value로 구성된 객체를 저장하는 구조
  • 데이터나 객체를 담아두기 편함
  • key는 중복이 될 수 없고, value값은 중복이 가능
  • 기존 저장된 key와 동일한 key로 값을 저장한다면 기존 값은 없어지고 새로운 값을 덮어쓰게 됨
  • HashMap, TreeMap 등이 있음

 

HashMap

해시 함수를 통해 키와 값이 저장되는 위치를 결정

JSON 파일 형태를 가지고 있음

ex) put(key, value) => put('apple','사과')

 

package test22;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;

public class HashMapTest1 {

	public static void main(String[] args) {
		
		//Map 인터페이스로 구현한 클래스 : HashMap 클래스
		//Map : key-value 값으로 구성되어 있음
		
		HashMap<String, String> hashMap = new HashMap<String, String>();
		
		//데이터 저장하기 : put(K key, V value) : Associates the specified value with the specified key in this map.
		hashMap.put("java", "자바");
		hashMap.put("javascript", "자바스크립트");
		hashMap.put("pythone", "파이썬");
		hashMap.put("ruby", "루비");
		System.out.println(hashMap);
		
		System.out.println("=======================");
		
		//key가 있는지 확인 : containsKey(Object key)
		System.out.println("'java' key 여부 : "+hashMap.containsKey("java"));
		
		System.out.println("=======================");
		
		//value가 있는지 확인 : containsValue(Object value)
		System.out.println("'java' value 여부 : " + hashMap.containsValue("java"));
		
		System.out.println("=======================");
		
		//key로 value 확인(Map의 기본 구조): get(Object key) 
		System.out.println("java key의 value : " + hashMap.get("java"));
		System.out.println("javascript key의 value : " + hashMap.get("javascript"));
		
		System.out.println("=======================");
		
		//map의 크기 : size()
		System.out.println("map의 크기" + hashMap.size());
		
		System.out.println("=======================");
		
		//Map에서 데이터를 한번에 조회
		//1. keySet() : Returns a Set view of the keys contained in this map.
		Set<String> keys = hashMap.keySet();
		for(String a : keys) {
			System.out.println(a);
		}
		
		System.out.println("=======================");

		//2. Iterator
		Iterator<String> ir = hashMap.keySet().iterator();
		while(ir.hasNext()) {
			String a = ir.next();
			System.out.println(a);
		}
		
	}

}

 

package test22;

import java.util.HashMap;
import java.util.Map;

public class HashMapTest3 {

	public static void main(String[] args) {

		Map map = new HashMap();
		
		//key
		int[] num = {5,4,3,2,1}; 
		//value		
		String[] dontMint = {"민초1","민초2","민초3","민초4","민초5"};
		
		map.put(num, dontMint);
		
		for(int i = 0 ; i < num.length; i++) {
			map.put(num[i], dontMint[i]);
		}
		
		System.out.println(map);
		//key를 기준으로 오름차순?
	}

}

 

package test22;

import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;

public class HashMapTest1 {

	public static void main(String[] args) {
		
		//Map 인터페이스로 구현한 클래스 : HashMap 클래스
		//Map : key-value 값으로 구성되어 있음
		
		HashMap<String, String> hashMap = new HashMap<String, String>();
		
		//데이터 저장하기 : put(K key, V value) : Associates the specified value with the specified key in this map.
		hashMap.put("java", "자바");
		hashMap.put("javascript", "자바스크립트");
		hashMap.put("pythone", "파이썬");
		hashMap.put("ruby", "루비");
		System.out.println(hashMap);
		
		System.out.println("=======================");
		
		//key가 있는지 확인 : containsKey(Object key)
		System.out.println("'java' key 여부 : "+hashMap.containsKey("java"));
		
		System.out.println("=======================");
		
		//value가 있는지 확인 : containsValue(Object value)
		System.out.println("'java' value 여부 : " + hashMap.containsValue("java"));
		
		System.out.println("=======================");
		
		//key로 value 확인(Map의 기본 구조): get(Object key) 
		System.out.println("java key의 value : " + hashMap.get("java"));
		System.out.println("javascript key의 value : " + hashMap.get("javascript"));
		
		System.out.println("=======================");
		
		//map의 크기 : size()
		System.out.println("map의 크기" + hashMap.size());
		
		System.out.println("=======================");
		
		//Map에서 데이터를 한번에 조회
		//1. keySet() : Returns a Set view of the keys contained in this map.
		Set<String> keys = hashMap.keySet();
		for(String a : keys) {
			System.out.println(a);
		}
		
		System.out.println("=======================");

		//2. Iterator
		Iterator<String> ir = hashMap.keySet().iterator();
		while(ir.hasNext()) {
			String a = ir.next();
			System.out.println(a);
		}
		
		System.out.println("=======================");
		
		//value만 가져오기 values() : Returns a Collection view of the values contained in this map.
		Collection values = hashMap.values();
		
		System.out.println("value만 가져오기 values()");
		Iterator<String> ir1 = values.iterator();
		while(ir1.hasNext()) {
			String b = ir1.next();
			System.out.println(b);
		}
		
		
	}

}

 

key는 중복될 수 없으므로 반환형이 Set, value는 중복이 가능하므로 Collection

 

package test22;

import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

public class HashMapTest1 {

	public static void main(String[] args) {
		
(...생략...)

		//3. key, value를 한 번에 들고 오기 Set<Map.Entry<K,V>> entrySet() : Returns a Set view of the mappings contained in this map.
		//Map.Entry 인터페이스는 Map 객체의 키와 값에 접근할 수 있도록 해주는 메소드를 가지고 있음(getKey(), getValue()). 키와 값을 추출(entrySet())
		
		Set set = hashMap.entrySet();
		
		Iterator ir2 = set.iterator();
		while(ir2.hasNext()) {
			
			Map.Entry<String, String> entry = (Entry<String, String>)ir2.next();
//			System.out.println(entry.getKey() + " : " + entry.getValue());	
			String entryKey = entry.getKey();
			String entryValue = entry.getValue();
			System.out.println("entryKey = " + entryKey);
			System.out.println("entryValue = " + entryValue);
			
		}
		
	}

}

 

 

TreeMap

  • key 값으로 자료를 정렬하는 경우 사용할 수 있음
  • 이진 검색 트리로 구현
  • key 값에 해당하는 클래스에 Comparable 인터페이스나 Comparator 인터페이스를 구현해야함
package test22;

import java.util.Iterator;
import java.util.TreeMap;

public class TreeMapTest1 {

	public static void main(String[] args) {

		TreeMap<Integer, String> treeMap = new TreeMap<Integer, String>();
		
		treeMap.put(1, "ㄱ");
		treeMap.put(3, "ㄴ");
		treeMap.put(2, "ㄷ");
		treeMap.put(4, "ㄹ");
		treeMap.put(5, "ㅁ");
		
		System.out.println(treeMap);
		
		System.out.println("============================");
		
		System.out.println(treeMap.get(1)); //key=1인 value
		System.out.println(treeMap.firstEntry()); //첫번째 Entry 가져오기
		System.out.println(treeMap.lastEntry()); //마지막 Entry 가져오기
		System.out.println(treeMap.firstKey()); //첫번째 키 가져오기
		System.out.println(treeMap.lastKey()); //마지막 키 가져오기

		System.out.println("============================");
		
		treeMap.remove(5);
		System.out.println(treeMap);
		
		System.out.println("============================");
		
		Iterator<Integer> ir = treeMap.keySet().iterator();
		while(ir.hasNext()) {
			Integer key = ir.next();
//			System.out.println(key); //key만 가져오기
//			System.out.println(ir.next());
			System.out.println(key + treeMap.get(key));
		}
		
		System.out.println("============================");
		
		
		
	}

}

 

package test22;

import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
import java.util.Map.Entry;

public class TreeMapTest1 {

	public static void main(String[] args) {

		TreeMap<Integer, String> treeMap = new TreeMap<Integer, String>();
		
		treeMap.put(1, "ㄱ");
		treeMap.put(3, "ㄴ");
		treeMap.put(2, "ㄷ");
		treeMap.put(4, "ㄹ");
		treeMap.put(5, "ㅁ");
		
		System.out.println(treeMap);
		
		System.out.println("============================");
		
		System.out.println(treeMap.get(1)); //key=1인 value
		System.out.println(treeMap.firstEntry()); //첫번째 Entry 가져오기
		System.out.println(treeMap.lastEntry()); //마지막 Entry 가져오기
		System.out.println(treeMap.firstKey()); //첫번째 키 가져오기
		System.out.println(treeMap.lastKey()); //마지막 키 가져오기

		System.out.println("============================");
		
		treeMap.remove(5);
		System.out.println(treeMap);
		
		System.out.println("============================");
		
		Iterator<Integer> ir = treeMap.keySet().iterator();
		while(ir.hasNext()) {
			Integer key = ir.next();
//			System.out.println(key); //key만 가져오기
//			System.out.println(ir.next());
			System.out.println(key + treeMap.get(key));
		}
		
		System.out.println("============================");
		
		
		Iterator<Entry<Integer,String>> ir1 = treeMap.entrySet().iterator();
		while(ir1.hasNext()) {
			Map.Entry<Integer, String> entry = ir1.next();
			System.out.println(entry.getKey() + " : " + entry.getValue());	
		}
		
		
	}

}

 

 

728x90

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

240418 Java  (0) 2024.04.18
240408 Java - 시간복잡도  (0) 2024.04.08
240403 Java - 컬렉션 프레임워크 3  (0) 2024.04.03
240401 Java - 컬렉션 프레임워크 2  (0) 2024.04.01
240328 Java - 컬렉션 프레임워크 1  (0) 2024.03.28