[JAVA] Map 계열 (Hashtable/HashMap/Properties) 정리
2020. 8. 4. 15:35ㆍProgramming 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
■ 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
■ 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
반응형
'Programming Language > JAVA' 카테고리의 다른 글
[JAVA] StringTokenizer 클래스 활용 (문자열 구분자로 자르기) (0) | 2020.08.06 |
---|---|
[JAVA] JVM의 메모리 구조 (0) | 2020.08.05 |
[JAVA] ArrayList 3가지 정렬 방법 정리 (Comparator 인터페이스/익명클래스/람다표현식) (0) | 2020.08.04 |
[Eclipse] 이클립스(Eclipse) 한글 깨짐 현상 해결 (0) | 2020.08.04 |
[JAVA] 컬렉션(Collection API) 정리 (Set 계열/List 계열) (2) | 2020.08.03 |