삶 가운데 남긴 기록 AACII.TISTORY.COM
Map 컬렉션 본문
Map
key와 value로 구성된 객체를 저장하는 구조입니다.
여기서 key와 value는 모두 객체입니다.
key는 중복될 수 없지만 값은 중복될 수 있습니다.
여기서 key는 중복을 허용하지 않으므로 set과 동일한 구조를 가진 객체입니다.
그래서 key는 keySet 형태로 저정되어 keySet() 메서드를 통해 얻을 수 있습니다.
만약 동일한 key로 value값을 저장하면 나중에 저장한 값으로 기존값이 대체되는 겁니다.
HashMap, Hashtable, LinkedHashMap, Properties, TreeMap 등이 있습니다.
HashMap
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class HashMapEx {
public static void main(String[] args) {
Map<String, Integer> map = new HashMap<String, Integer>();
map.put("홍길동", 90);
map.put("고길동", 100);
map.put("홍길동", 85);
map.put("김길동", 80);
System.out.println("Entry 개수: "+map.size());
System.out.println("홍길동 점수: "+ map.get("홍길동"));
Set<String> keySet = map.keySet();
Iterator<String> keyIterator = keySet.iterator();
while(keyIterator.hasNext()) {
String key = keyIterator.next();
Integer value = map.get(key);
System.out.println(key + ":" + value);
}
map.remove("홍길동");
System.out.println("Entry 개수: "+map.size());
Set<Map.Entry<String, Integer>> entrySet = map.entrySet();
Iterator<Map.Entry<String, Integer>> entryIterator = entrySet.iterator();
while(entryIterator.hasNext()) {
Map.Entry<String, Integer> entry = entryIterator.next();
String key = entry.getKey();
Integer value = entry.getValue();
System.out.println(key + ":" +value);
}
map.clear();
System.out.println(map.size());
}
}
Hashtable
Hashtable은 Hashmap과 유사하지만 멀티스레드 safe 한 차이점이 있습니다.
Properties
Properties는 Hashtable의 하위 컬렉션이며, 다만 key와 value를 String 타입으로 고정한 컬렉션입니다.
key와 value가 = 기호로 연결된 텍스트 입니다.
한글의 경우 유니코드로 변환되어 저장됩니다.
예제를 위해 같은 패키지 경로에 database.properties 파일을 한개 생성합니다.
driver=oracle.jdbc.OracleDriver
url=jdbc:oracle:thin:@localhost:1521:orcl
이후 예제 파일을 작성합니다.
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.net.URLDecoder;
import java.util.Properties;
public class PropertiesEx {
public static void main(String[] args) throws FileNotFoundException, IOException {
Properties properties = new Properties();
String path = PropertiesEx.class.getResource("database.properties").getPath();
path = URLDecoder.decode(path, "utf-8");
properties.load(new FileReader(path));
String driver = properties.getProperty("driver");
System.out.println("driver:"+driver);
}
}
실행해보면 파일로 작성한 database.properties 파일을 읽어서 키값이 driver로 된 value 값을 출력합니다.
728x90
'DEV&OPS > Java' 카테고리의 다른 글
Stack과 Queue (0) | 2022.05.10 |
---|---|
컬랙션 검색, 병렬처리, 동기화 (0) | 2022.05.09 |
Set 컬렉션 (0) | 2022.05.09 |
List 컬렉션 (0) | 2022.05.09 |
람다식 (0) | 2022.05.06 |