[88일차] JAVA의 Map에서 key와 value를 꺼내기

저요·2022년 12월 19일

2022 100th day challenge

목록 보기
87/97

JAVA의 Map에서 key와 value를 꺼내기

오늘 이 주제를 선택하게 된 이유는 다음과 같다.
어떠한 데이터를 호출하는 API에서 Map<String, Object> 타입의 객체 map을 받아 화면에 뿌려주는 javascript 로직이 있다.

//자바스크립트는 map에서 key와 value를 꺼내올때 다음과 같은 메서드를 사용한다.
const map = {
	data : "1",
    data2 : 2,
    data3 : false
}

console.log(Object.keys(map)); //["data", "data2","data3"]
console.log(Object.keys(map).map(function(key){return map[key]})); //['1', 2, false]

map의 데이터를 풀어 화면에 뿌려주기 위해서이다. 하지만, 이 작업을 서비스단에서 진행하기 위해 JAVA 코드로 바꾸려면 어떤 식으로 바꾸어야 할까?

1. for문을 사용한 방법

// key value ["data", "data2","data3"]
for(Object key : map.keySet()) {
	map.get(key); //['1', 2, false]
}

2. Iterator를 사용한 방법

Iterator<Stirng> keys = map.keySet().iterator();
while(key.hasNext()){
	map.get(keys.next());
    // key value ["data", "data2","data3"]
    // result['1', 2, false]
}

3. forEach를 사용한 방법 (JAVA 8 이상)

map.forEach((key, value) -> { System.out.println("key : " + key + " value : " + value); });
// key : data value : 1
// key : data2 value : 2
// key : data3 value : false

람다함수를 이용한 forEach를 사용한 map의 key와 value 꺼내기 방법을 이용하면 코드를 많이 단축시킬 수 있다는 장점이 있다! 이와 같은 방법으로 key를 꺼내면 사실 순서대로 결과가 나오지는 않을 수 있다. 순서대로 Map의 key를 뽑아내고 싶다면 LinkedHashMap객체를 사용하면 된다.

참고

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys
https://wonyoung2.tistory.com/678
https://docs.oracle.com/javase/8/docs/api/java/util/LinkedHashMap.html

profile
웹개발

0개의 댓글