0709 - JAVA Map 컬렉션

이진성·2021년 7월 9일
0

0709 - JAVA Map 컬렉션

Map 컬렉션의 특징 및 주요 메소드

  • 키(key)와 값(value)로 구성된 Map.Entry 객체를 저장하는 구조
  • 키와 값은 모두 객체이다.
  • 키는 중복(X)될 수 없지만
  • 값은 중복(O) 저장 가능
  • HashMap, Hashtable, LinkedHashMap, Properties, TreeMap

- Map 컬렉션

//--1. Map 컬렉션 생성
// Map 요소의 키의 타입 -> String / 값의 타입 -> Integer
Map<String, Integer> map = new HashMap<>();
//put 으로 키와 값을 저장
map.put("홍길동", 90);

//map.size()로 map의 총 엔트리 수를 반환
map.size()

//get()으로 '키'에 대한 '값'을 반환
map.get("홍길동") 

//remove()으로 '키'에 대한 '값'을 삭제
map.remove("홍길동");

//clear()으로 객체 전체 삭제 (자원해제)
map.clear();

Map 컬렉션의 순회

    1. forEach 람다식으로 컬렉션 순회
//--1st. method : forEach
map.forEach( 
	(k, v) -> { 
		String formatted = String.format("- name : %s, vlaue : %s", k, v);
		log.info(formatted);
	} // BiConsumer<K, V>의 람다식  
);
    1. 반복자(iterator)의 hasNext()메소드로 우선 순회할 요소가 남아있는지 확인하고, 있다면(true이면), 반복자의 next() 메소드로 해당 객체를 얻어낼 수가 있다.
//--2st. method : 객체를 하나씩 처리
Set<String> keySet = map.keySet();

Iterator<String> keyIterator = keySet.iterator();

while(keyIterator.hasNext()) {
	String key = keyIterator.next();
	Integer value = map.get(key);
	
	log.info("\t" + key + " : " + value);
}//while

Objects - helper 클래스
Objects.requireNonNull(map); - 인자의 null 체크를 해주고 null이 아닐시 그대로 반환


- Map 컬렉션의 Properties

  • Properties 특징
    • [키와 값]을 String 타입으로 제한한 Map 컬렉션이다.
    • properties는 프로퍼티(@#!@!@!@$.properties)파일을 읽어 들일 때 주로 사용한다.
  • 프로퍼티(!@#!@#!#.properties) 파일
    • 옵션 정보, 데이터베이스 연결 정보, 국제화(다국어) 정보를 기록
      • 텍스트 파일로 활용
    • 애플리케이션에서 주로 변경이 잦은 문자열을 저장한다.
      • 유지보수를 편하게 만들어준다
    • 키와 값이 '=' 기호로 연결되어 있는 텍스트 파일이다
      • ISO 8859-1 문제셋으로 저장되며
      • 한글은 유니코드로 변환되어 저장된다.
    1. .properties파일을 handling할 수 있는 Map객체로 Properties객체 생성
Properties properties = new Properties();
    1. .properties파일의 위치(경로) 얻기
String path = PropertiesExample.class.getResource("database.properties").getPath();
    1. Classpath에서 찾은 database.properties 파일의 경로가 이미 URL Encoding 되어있기 때문에, 다시 역으로 URL Decoding을 수행해서, 정상적인 파일경로를 얻도록한다.
path = URLDecoder.decode(path, "utf-8");
log.info("- path : " + path);
    1. database.properties파일을 읽어서, Map객체로 끌어올리도록(loading) 한다!
properties.load(new FileReader(path));
    1. Properties타입의 메소드 중에, 특정 요소의 값을 반환하는 메소드로, getProperty(key)가 있음.
  • 이 메소드로, database.properties 파일에 있는 값을 얻는 것과 같음.
String driver = properties.getProperty("driver");
String url = properties.getProperty("url");
log.info("driver : " + driver);
log.info("url : " + url);

0개의 댓글