[JAVA] Map 계열 (Hashtable/HashMap/Properties) 정리

2020. 8. 4. 15:35Programming Language/JAVA

반응형

Map 계열

데이터를 key/value 쌍으로 저장하는 자료구조이다.
key는 중복이 없는 유일한 값으로 사용되며, 
value는 중복이 가능하다.
순서가 없기 때문에 랜덤으로 출력된다.


※ 대표적인 메서드 

메서드 설명
put(Object key, Object value)
putAll(Map m)
key에 해당되는 value객체를 저장
value get(key) key에 해당되는 value 반환
remove(key) key에 해당되는 value 삭제
void clear() Map의 모든 객체를 삭제
boolean isEmpty() Map이 비어있는지 확인
Set keySet() Map에 저장된 모든 key객체를 Set 계열로 반환
Collection<value> values() Map에 저장된 모든 값들을 Collection으로 반환
boolean containsKey(key) Map에 지정된 key가 있는지 boolean으로 반환
boolean containsValue(value) Map에 지정된 value가 있는지 boolean으로 반환
int size() Map에 저장된 객체의 갯수

■ Hashtable

key와 value 값으로 null 값을 허용하지 않는다.


※ 메서드 활용

import java.util.Collection;
import java.util.Hashtable;
import java.util.Set;

public class HashtableTest {

	public static void main(String[] args) {
		
		// key : String형 , value : Integer형
		Hashtable<String, Integer> map = new Hashtable<String, Integer>();
		
// 1 -- 데이터 삽입
		map.put("KIM",  160);
		map.put("PARK", 170);
		map.put("LEE", 165);
		map.put("HAN", 170);
		map.put("HONG", 180);
		
// 2 -- null 데이터 삽입 불가 (에러 발생)
		// map.put("KANG", null);
		
// 3 -- 모든 key 객체를 Set로 반환
		Set<String> keys = map.keySet();
		for(String key : keys) {
			System.out.println("Key : " + key);
		}
// 4 -- 지정한 key가 존재하는지 확인		
		System.out.println("HAN으로 지정된 key가 있는가 ? " + map.containsKey("HAN"));
		
// 5 -- 모든 value 객체를 Collection으로 반환
		Collection<Integer> values = map.values();
		for(int value : values) {
			System.out.println("value : " + value);
		}
// 6 -- 지정한 value가 존재하는지 확인		
		System.out.println("160으로 지정된 value가 있는가 ? " + map.containsValue(160));
		
// 7 -- 지정한 key에 해당하는 value 삭제
		map.remove("HAN");
		
// 8 -- Map 자료구조에 모든 데이터(key/value) 확인 
		Set<String> keySeconds = map.keySet();
		for(String key : keySeconds) {
			System.out.println("Key : " + key + ", value : " + map.get(key));
		}
	}
}

/*
※ 출력 결과
Key : HONG
Key : HAN
Key : LEE
Key : PARK
Key : KIM
HAN으로 지정된 key가 있는가 ? true
value : 180
value : 170
value : 165
value : 170
value : 160
160으로 지정된 value가 있는가 ? true
Key : HONG, value : 180
Key : LEE, value : 165
Key : PARK, value : 170
Key : KIM, value : 160
*/

SOURCE CODE

 

hyunmin94/JavaExam

Contribute to hyunmin94/JavaExam development by creating an account on GitHub.

github.com


 HashMap

key와 value 값으로 null 값을 허용한다.


※ 메서드 활용

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

public class HashMapTest {

	public static void main(String[] args) {
		
		// key : String형 , value : String형
		HashMap<String, String> map = new HashMap<String, String>();
		
// 1 -- 데이터 삽입
		map.put("KIM", "Inchon");
		map.put("PARK", "Gangsu");
		map.put("LEE", "Suwon");
		map.put("HAN", "Itaewon");
		map.put("HONG", "Hannam");
// 2 -- null 데이터 삽입 가능
		map.put(null, null);
		
// 3 -- 모든 key 객체를 Set로 반환
		Set<String> keys = map.keySet();
		for(String key : keys) {
			System.out.println("Key : " + key);
		}
// 4 -- 지정한 key가 존재하는지 확인
		System.out.println("HAN으로 지정된 key가 있는가 ? " + map.containsKey("HAN"));
		
// 5 -- 모든 value 객체를 Collection으로 반환
		Collection<String> values = map.values();
		for(String value : values) {
			System.out.println("value : " + value);
		}
// 6 -- 지정한 value가 존재하는지 확인		
		System.out.println("Hannam 으로 지정된 value가 있는가 ? " + map.containsValue("Hannam"));
		
// 7 -- 지정한 key에 해당하는 value 삭제
		map.remove("HAN");
		
// 8 -- Map 자료구조에 모든 데이터(key/value) 확인 
		Set<String> keySeconds = map.keySet();
		for(String key : keySeconds) {
			System.out.println("Key : " + key + ", value : " + map.get(key));
		}
	}
}

/*
※ 출력 결과
Key : null
Key : HONG
Key : HAN
Key : LEE
Key : KIM
Key : PARK
HAN으로 지정된 key가 있는가 ? true
value : null
value : Hannam
value : Itaewon
value : Suwon
value : Inchon
value : Gangsu
Hannam 으로 지정된 value가 있는가 ? true
Key : null, value : null
Key : HONG, value : Hannam
Key : LEE, value : Suwon
Key : KIM, value : Inchon
Key : PARK, value : Gangsu
*/

SOURCE CODE

 

hyunmin94/JavaExam

Contribute to hyunmin94/JavaExam development by creating an account on GitHub.

github.com


■ Properties 클래스 - Hashtable의 하위 클래스 

Hashtable과 사용법은 유사하며, key와 value 모두 String으로 저장할 때 사용하는 특화된 클래스이다.


메서드 설명
void setProperty(String key, String value) key에 해당되는 value 객체를 저장
String getProperty(String key) key에 해당하는 String형 value 반환
Enumeration<Object> keys() Properties에 저장되있는 모든 key를 Enumeration<Object>로 반환
Set<Object> keySet() Properties에 저장되있는 모든 key를 Set<Object>로 반환
Enumeration<?> propertyNames() Properties에 저장되있는 모든 key를 Enumeration<?>로 반환
Set<String> stringPropertyNames() Properties에 저장되있는 모든 key를 Set<String>로 반환
Enumeration<Object> elements() Properties에 저장되있는 모든 value를 Enumeration<Object>로 반환
Collection<Object> values() Properties에 저장되있는 모든 value를 Collection<Object>로 반환
boolean replace(key, oldValue, newValue) key에 해당하는 value값인 oldValue를 newValue로 변환 
해당하는 key객체가 있으면 true, 없으면 false

※ 메서드 활용

import java.util.Collection;
import java.util.Enumeration;
import java.util.Iterator;
import java.util.Properties;
import java.util.Set;

public class PropertiesTest {

	public static void main(String[] args) {
		Properties prop = new Properties();
// 1 -- 데이터 삽입 : setProperty 메서드, put 메서드
		prop.setProperty("KIM", "Inchon");
		prop.put("CHOI","Anyang");
		prop.setProperty("PARK", "Gangsu");
		prop.setProperty("LEE", "Suwon");
		prop.setProperty("HAN", "Itaewon");
		prop.setProperty("HONG", "Hannam");
		
// 2 -- Properties에 있는 모든 key를 Enumeration<Object>로 반환
		Enumeration<Object> enuKeys = prop.keys();
		while(enuKeys.hasMoreElements()) {
			System.out.println("keys : " + enuKeys.nextElement());
		}
		
// 3 -- Properties에 있는 모든 key를 Enumeration<?> 로 반환
		Enumeration<?> enuNames = prop.propertyNames();
		while(enuNames.hasMoreElements()) {
			System.out.println("propertyNames : " + enuNames.nextElement());
		}
	
// 4 -- Properties에 있는 모든 key를 Set<String> 로 반환
		Set<String> setstringPropertyNames = prop.stringPropertyNames();
		Iterator<String> its = setstringPropertyNames.iterator();
		while(its.hasNext()) {
			System.out.println("stringPropertyNames : " + its.next());
		}
		
// 5 -- Properties에 있는 모든 key를 Set<Object> 로 반환
		Set<Object> setKeys = prop.keySet();
		Iterator<Object> itk = setKeys.iterator();
		while(itk.hasNext()) {
			System.out.println("keySet : " + itk.next());
		}
		
// 6 -- Properties에 있는 모든 value를 Enumeration<Object> 로 반환
		Enumeration<Object> enuValues = prop.elements();
		while(enuValues.hasMoreElements()) {
			System.out.println("elements : " + enuValues.nextElement());
		}

// 7 -- Properties에 있는 모든 value를 Collection<Object> 로 반환
		Collection<Object> colValues = prop.values();
		Iterator<Object> itv = colValues.iterator();
		while(itv.hasNext()) {
			System.out.println("values : " + itv.next());
		}
		
// 8 -- 해당하는 key의 value 값을 변경 
		System.out.println("변경 전 HAN의 위치 : "+ prop.get("HAN"));
		System.out.println(prop.replace("HAN", "Itaewon", "Gunsan"));
		System.out.println("변경 후 HAN의 위치 : "+ prop.getProperty("HAN"));
	}
}

/*
※ 출력 결과
keys : CHOI
keys : HONG
keys : HAN
keys : LEE
keys : KIM
keys : PARK
propertyNames : CHOI
propertyNames : HONG
propertyNames : HAN
propertyNames : PARK
propertyNames : LEE
propertyNames : KIM
stringPropertyNames : CHOI
stringPropertyNames : HONG
stringPropertyNames : HAN
stringPropertyNames : LEE
stringPropertyNames : KIM
stringPropertyNames : PARK
keySet : CHOI
keySet : HONG
keySet : HAN
keySet : LEE
keySet : KIM
keySet : PARK
elements : Anyang
elements : Hannam
elements : Itaewon
elements : Suwon
elements : Inchon
elements : Gangsu
values : Anyang
values : Hannam
values : Itaewon
values : Suwon
values : Inchon
values : Gangsu
변경 전 HAN의 위치 : Itaewon
true
변경 후 HAN의 위치 : Gunsan
*/

SOURCE CODE

 

hyunmin94/JavaExam

Contribute to hyunmin94/JavaExam development by creating an account on GitHub.

github.com

반응형