ejyoo's 개발 노트

Map 본문

BackEnd/Java

Map

ejyoovV 2021. 3. 8. 19:47

Map은 Key값과 value 값을한 쌍으로 관리하는 객체이다.

Key 값은 중복을 허용하지 않고 순서가 없다. (Set의 특징과 동일)

Value 값은 중복을 허용한다.

 

💡 Map의 자료추가 : put(K,V)

import java.util.HashMap;
import java.util.Map;

public class Main {
	public static void main(String[] args) {
		Map<String, String> map = new HashMap<String, String>();
		
		map.put("name", "홍길동");
		map.put("addr", "대전");
		map.put("tel", "010-1234-5678");
		
		System.out.println("map => " + map);
	}
}

💡 Map 자료수정 : put(K,V)

put 메서드를 사용 (덮어쓰기)

import java.util.HashMap;
import java.util.Map;

public class Main {
	public static void main(String[] args) {
		Map<String, String> map = new HashMap<String, String>();
		
		map.put("name", "홍길동");
		map.put("addr", "대전");
		map.put("tel", "010-1234-5678");
		
		System.out.println("map 수정전 => " + map);
		System.out.println("■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■");
		map.put("addr", "서울");
		System.out.println("map 수정후 => " + map);
	}
}

💡 Map 자료삭제 : remove(K)

import java.util.HashMap;
import java.util.Map;

public class Main {
	public static void main(String[] args) {
		Map<String, String> map = new HashMap<String, String>();
		
		map.put("name", "홍길동");
		map.put("addr", "대전");
		map.put("tel", "010-1234-5678");
		
		System.out.println("map 수정전 => " + map);
		System.out.println("■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■");
		map.put("addr", "서울");
		System.out.println("map 수정후 => " + map);
		System.out.println("■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■");
		map.remove("name");
		System.out.println("map 자료제거 후 => " + map);
		
	}
}

💡 Map 자료 출력하기 1 : KeySet() 메서드 사용한 뒤 Iterator로 뽑기

Map의 Key는 Set과 같은 구조이다.

따라서 Map Key값만 뽑아 Set에 저장할 수 있다.

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

public class Main {
	public static void main(String[] args) {
		Map<String, String> map = new HashMap<String, String>();
		
		map.put("name", "홍길동");
		map.put("addr", "대전");
		map.put("tel", "010-1234-5678");
		
		Set<String> keySet = map.keySet();
		
		System.out.println("Iterator를 사용하여 뽑기");
		
		Iterator<String> it = keySet.iterator();
		while(it.hasNext()) {
			String key = it.next();
			System.out.println(key + " : " + map.get(key));
		}
		System.out.println("■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■");
	}
}

💡 향상된 for 문을 사용하여 Key Value 뽑기

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class Main {
	public static void main(String[] args) {
		Map<String, String> map = new HashMap<String, String>();
		
		map.put("name", "홍길동");
		map.put("addr", "대전");
		map.put("tel", "010-1234-5678");
		
		Set<String> keySet = map.keySet();
		
		System.out.println("향상된 for문을 사용하여 뽑기");
		
		for(String key : keySet) {
			System.out.println(key + " : " + map.get(key));
		}
		System.out.println("■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■");
	}
}

💡 향상된 for 문을 사용하여 Value 뽑기

value는 중복데이터가 존재할 수 잇으므로 Set 처리는할 수 없다.

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class Main {
	public static void main(String[] args) {
		Map<String, String> map = new HashMap<String, String>();
		
		map.put("name", "홍길동");
		map.put("addr", "대전");
		map.put("tel", "010-1234-5678");
		
		Set<String> keySet = map.keySet();
		
		System.out.println("향상된 for문을 사용하여 value 값만 뽑기");
		
		for(String value : map.values()) {
			System.out.println(value);
		}
		System.out.println("■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■");
	}
}

💡 Map - Entry 내부 클래스 - entrySet(), entryIt.hasNext(), entryIt.next(), entry.getKey(), entry.getValue()

Map에는 Entry라는 내부 클래스가 만들어져 잇다.

이 클래스는 key와 value라는 멤버 변수로 구성되어 있다.

Map에서 이 Entry들을 Set형식으로 저장하여 관리한다.

Entry는 Map에서만 쓰기 때문에 외부 클래스로 빼서 정의할 이유가 없어서 내부클래스로 정의한 것이다.

가져온 Entry 객체들을 순서대로 처리하기 위해 Iterator 객체로 변환한다.

이것을 향상된 for 문을 사용하여 출력할 수 있다.

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

public class Main {
	public static void main(String[] args) {
		Map<String, String> map = new HashMap<String, String>();
		
		map.put("name", "홍길동");
		map.put("addr", "대전");
		map.put("tel", "010-1234-5678");
		
		Set<Map.Entry<String, String>> mapSet = map.entrySet();
		
		Iterator<Map.Entry<String, String>> entryIt = mapSet.iterator();
		
		while(entryIt.hasNext()) {
			Map.Entry<String, String> entry = entryIt.next();
			
			System.out.println("key값 : " + entry.getKey());
			System.out.println("value값 : " + entry.getValue());
			System.out.println();
		}
		System.out.println("■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■");
	}
}

'BackEnd > Java' 카테고리의 다른 글

Enum(열거형)  (0) 2021.03.08
Properties  (0) 2021.03.08
Hash - equals()와 hash() 메서드 구현  (0) 2021.03.08
TreeSet  (0) 2021.03.07
Set  (0) 2021.03.07