반응형

Java map 추가 및 수정하는 방법

기본적인 부분이지만 기본적인것을 깜박하고 많은시간을 버릴 수가 있다.

 

우선 기본적인 get,put 이다.

 

LinkedHashMap<String, Object> map = new LinkedHashMap<String, Object>();
map.put("1",1); //추가
int val = (int)map.get("1"); //가져오기
System.out.println(val);

 

값을 가져와서 변경할 때이다.

아래와 같이 할 경우에는 map의 주소를 저장하는것이기 때문에 해당 map을 변경하여도

이전 map의 값도 변경하게 된다.

 

import java.util.LinkedHashMap;

public class MainApp {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		LinkedHashMap<String, Object> newMap = new LinkedHashMap<String, Object>();
		newMap.put("1", 1);
		newMap.put("2", 2);
		newMap.put("3", 3);
		newMap.put("4", 4);
		newMap.put("5", 5);
		
		LinkedHashMap<String, Object> newMap2 = new LinkedHashMap<String, Object>();
		
		newMap2 = newMap;
		
		newMap2.put("1", (int)newMap2.get("1")+5);
		
		for (String key : newMap2.keySet()){
			System.out.println("key : " + key + "val : " + newMap2.get(key));
		}
		
		System.out.println("\n");
		
		for (String key : newMap.keySet()){
			System.out.println("key : " + key + "val : " + newMap.get(key));
		}
	}
	

}

결과값.

key : 1val : 6
key : 2val : 2
key : 3val : 3
key : 4val : 4
key : 5val : 5


key : 1val : 6
key : 2val : 2
key : 3val : 3
key : 4val : 4
key : 5val : 5

 

해당 맵의 값을 변경하지 않을경우에는 map의 주소를 저장하는것이 아니라, map의 값을 저장해주어야된다.

아래와 같은 방법을 사용하면 된다.

import java.util.LinkedHashMap;

public class MainApp {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		LinkedHashMap<String, Object> newMap = new LinkedHashMap<String, Object>();
		newMap.put("1", 1);
		newMap.put("2", 2);
		newMap.put("3", 3);
		newMap.put("4", 4);
		newMap.put("5", 5);
		
		LinkedHashMap<String, Object> newMap2 = new LinkedHashMap<String, Object>();
		
		newMap2.putAll(newMap); 
		
		newMap2.put("1", (int)newMap2.get("1")+5);
		
		for (String key : newMap2.keySet()){
			System.out.println("key : " + key + "val : " + newMap2.get(key));
		}
		
		System.out.println("\n");
		
		for (String key : newMap.keySet()){
			System.out.println("key : " + key + "val : " + newMap.get(key));
		}
	}
	

}

결과값.

key : 1val : 6
key : 2val : 2
key : 3val : 3
key : 4val : 4
key : 5val : 5


key : 1val : 1
key : 2val : 2
key : 3val : 3
key : 4val : 4
key : 5val : 5

반응형

+ Recent posts