잡동사니

반응형

질문

나는 당신 중 일부가 중복으로 표시하지만 다른 사람 스레드에서 비슷한 질문을하고 싶지 않았습니다.두 개의지도가 있습니다.

Map<Long, Long> map1 = new HashMap<>();
Map<Long, Long) map2 = new HashMap<>();

이 두지도는 크기가 다릅니다.지도는 다음과 같이 표시됩니다.

map1        map2
(1,1)       (1,1)
(2,1)       (2,1)
            (3,1) 

또는:

map1        map2
(1,1)       (1,1)
(2,1)       (2,1)
            (3,1) 
            (4,1)

이제 map1과 map2의 차이점 만 포함하는 map3을 만들고 싶습니다. 즉, (K, V)-> (3,1) ((K, V)-> (3 , 1); (4,1)). 그런 다음 (K, V) 값을 가져와 사용합니다.이 스레드에서 비슷한 질문 에는 해결책이 있지만 저에게는 효과가 없습니다. compareKeysAndValues (map1, map2)메소드로 전달, 수신 : 필수 Map < Long, Long > 제공 Map < Long, Boolean)

어떤 아이디어?


답변1

확실한 해결책은 두 맵의 키를 탐색하고 다른 맵에 키가없는 경우 새 맵에 항목을 추가하는 것입니다.

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

public class test {
    public static void main(String[] args){
        Map<Long, Long> map1 = new HashMap<>();
        Map<Long, Long> map2 = new HashMap<>();
        map1.put(1L, 1L);
        map1.put(2L, 1L);
        map1.put(5L, 1L);
        map2.put(1L, 1L);
        map2.put(2L, 1L);
        map2.put(3L, 1L);
        map2.put(4L, 1L);

        Map<Long, Long> map3 = new HashMap<>();

        for(Map.Entry<Long, Long> entry : map1.entrySet()){
            if(!map2.containsKey(entry.getKey())){
                map3.put(entry.getKey(), entry.getValue());
            }
        }

        for(Map.Entry<Long, Long> entry : map2.entrySet()){
            if(!map1.containsKey(entry.getKey())){
                map3.put(entry.getKey(), entry.getValue());
            }
        }

        for(Map.Entry<Long, Long> entry : map3.entrySet()){
            System.out.println(entry.getKey() + ", " + entry.getValue());
        }
    }
}

산출:

3, 1
4, 1
5, 1


 

 

 

 

출처 : https://stackoverflow.com/questions/63143640/compare-two-maps-by-key-and-value-and-storing-difference-into-resultant-map

반응형

이 글을 공유합시다

facebook twitter googleplus kakaoTalk kakaostory naver band