자바 컬렉션 프레임워크 - Map

MIN·2023년 11월 16일

Java

목록 보기
25/36
post-thumbnail

학원수업내용 복습

2023.11.17

🍒 Map이란?

map은 배열, list처럼 index대신 key를 이용하여 값에 접근하는 자료구조다.

[ key : value ]
이렇게 1 : 1 맵핑되어 저장한다.
이때 key는 중복되어서는 안되고 value는 중복을 허용한다.

Map을 구현한 클래스는
HashMap( )과 LinkedHashMap( ) 등이 있다.
HashMap( )은 값을 저장할 때 순서대로 저장되지 않으며 LinkedHashMap( )은 순서대로 저장된다.


📌 Map의 또다른 사용용도

여러 값을 묶어서 표현하거나 전달해야 하는데
그에 맞는 클래스를 작성하기 번거로울 때(사용빈도가 낮아서)
클래스를 작성하는 대신, Map에 저장하여 한번에 전달하는 용도로도 사용한다.


🍒 Map 사용하기

LinkedHashMap<String, String> map = new LinkedHashMap<>();
// key와 value모두 String타입으로 map을 생성한다는 뜻!

map은 위처럼 key와 value의 자료형을 모두 적어줘야 한다.

  • put(key, value) : map안에 값을 저장한다.
    만약 key가 이미 존재하고 있다면 해당 value를 덮어쓴다.

  • get(key) : 해당 key에 맞는 value를 반환한다.
    존재하지 않는 key를 입력하면 null을 반환한다.

  • remove(key) : 작성한 key에 해당하는 값을 삭제한다.
    출력시 삭제되는 value를 반환한다.

  • clear( ) : map 전체를 삭제한다.

  • containsKey(key) : 해당 key를 포함하고 있는지 boolean타입을 반환한다.

  • containsValue(value) : 해당 value를 포함하고 있는지 boolean타입을 반환한다.

  • size( ) : map의 길이를 반환한다 (= map에 저장된 데이터 개수를 반환한다)

  • isEmpty( ) : map이 비어있는지 확인할때 사용한다.


key는 중복이 안되기 때문에 keyset( ) 함수를 이용하여 set으로 만들 수 있다.

Set<String> keyset = map.keySet();

이때 set의 제네릭 타입을 key의 자료형으로 해야 한다.


🍒 properties 타입

key와 value의 제네릭 타입이 모두 String이면서 파일에 저장해서 불러올 경우는 properties 타입을 사용할 수도 있다.

Properties pro = new Properties();
// properties타입 pro객체 생성
		
pro.put("pro1key", "pro1val");
pro.put("pro2key", "pro2val");
pro.put("pro3key", "pro3val");
pro.put("pro4key", "pro4val");
// pro에 값 넣어주기
		
for (Object k : pro.keySet()) {
	Object v = pro.get(k);
	System.out.println(k + " : " + v);
}
// map과 동일하게 keySet을 이용하여 set으로 만들 수 있다.
// 향상된 for문을 이용해 내부의 key와 value를 출력할 수 있다. 


File f = new File("pro_study.txt");
FileOutputStream fos = new FileOutputStream(f);
OutputStreamWriter osw = new OutputStreamWriter(fos, "UTF-8");
pro.store(osw, "String class Function");
// File(txt)을 생성하여 내부에 객체 pro를 저장
// 맨 아래의 "String class Function"은 txt파일의 위쪽에 적힌다.

pro.txt에 저장된 내용
#String class Function
#Mon Nov 20 01:23:39 KST 2023
pro2key=pro2val
pro1key=pro1val
pro3key=pro3val
pro4key=pro4val

profile
기초부터 시작하는 감쟈 ※ 소개글 확인해주세요!! ※

0개의 댓글