티스토리 뷰

Java/JAVA

Map

Jenny_yoon 2023. 1. 8. 08:44
728x90
반응형
Map의 형태

  Map<Key, Value> (Map <K, V>)

 

Map 특징

 Key중복 불가능, Value 중복 가능

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

public class Map01 {
	public static void main(String[] args) {

		Map<String, Integer> map = new HashMap<String,Integer>();
		
		//저장 put(Key, Value)
		map.put("홍길동", 12);
		map.put("김길동", 30);
		map.put("이길동", 20);
		map.put("최길동", 10);
		map.put("윤길동", 50);
		map.put("오길동", 100);
		System.out.println(map); // {김길동=30, 홍길동=12, 윤길동=50, 최길동=10, 이길동=20, 오길동=100}

		//출력 get(Key)
		System.out.println(map.get("이길동")); //해당 value값 //20 
		System.out.println(map.get("없는거")); //값 없음 //null
		
		//있는지 물어보기
		System.out.println(map.containsKey("이길동")); //true
		System.out.println(map.containsKey("이길동1")); //false
		System.out.println(map.containsValue(1000));//false
		
		//값 지우기
		System.out.println("값 지울 경우 : ");
		System.out.println(map.remove("이길동"));
		System.out.println(map); //{김길동=30, 홍길동=12, 윤길동=50, 최길동=10, 오길동=100}
		System.out.println(map.size()); //5

 

map을 list로 변환하는 방법 2가지

map은 콜렉션 유형에 속하나 collection과 상속관계라고는 할수없다. 즉 엄밀히는 콜렉션이 아니다. 따라서 콜렉션인 list로 변환하려면 set을 통해야한다. set도 콜렉션지만 메소드keyset()을 통해서 map을 set으로 변환하고, set을 list으로 변환할수 있다.

또는 set에서 iterator로 변경하는 방법도 있다.

 

 

1. map -> set -> list

set<String> map2set = map.key.set(); //key값만 뽑아서 set으로 변환 //map -> set
System.out.println(map2set); //[김길동, 홍길동, 윤길동, 최길동, 오길동]
List<String> set2List = new ArrayList<string>(map2set);//set을 list로 변환
System.out.println(set2List); //[김길동, 홍길동, 윤길동, 최길동, 오길동]

 

2. map -> set -> iterator

: key를 알고있는 경우, get( ) 메소드로 간단하게 객체를 찾을 수 있다.

만약 전체 key의 value를 얻고 싶은 경우, iterator(반복자)를 통해 key를 하나씩 얻고 get( )메소드를 통해 값을 얻을 수 있다.

 

KeySet 얻기 -> iterator 얻기 -> 반복문을 통해 key얻기 -> value 얻기
Set<String> KeySet = map.KeySet(); //KeySet 얻기
Iterator<String> it = map.keyset().iterator(); //iterator 얻기

while(it.hasNext()){
String key = it.next(); //Key 얻기
    Integer value = map.get(key) //value 얻기
    System.out.print("K : " + key);
    System.out.println(", V : " + value);
   {
   /*
K : 김길동V : 30
K : 홍길동V : 12
K : 윤길동V : 50
K : 최길동V : 10
K : 오길동V : 100
K : 김길동, V : 30
K : 홍길동, V : 12
K : 윤길동, V : 50
K : 최길동, V : 10
K : 오길동, V : 100
*/
728x90
반응형

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

Stack - LIFO(last in first out)  (0) 2023.01.09
컬렉션 프레임워크(Collection Framwork)란?  (0) 2023.01.08
Set  (0) 2023.01.06
String 문자열  (2) 2023.01.06
Iterator (반복자)  (0) 2023.01.06
댓글
250x250
반응형
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday