Recent Posts
Recent Comments
Link
06-30 12:53
Today
Total
관리 메뉴

삶 가운데 남긴 기록 AACII.TISTORY.COM

Map 컬렉션 본문

DEV&OPS/Java

Map 컬렉션

ALEPH.GEM 2022. 5. 9. 13:42

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