Java에서 2 개의 Map을 가지고 있다고 가정 해 봅시다. map1의 키를 map2의 키와 비교하여 2 개의 맵에 유사한 키가 있는지 확인하려고합니다.다른 해시 맵의 키를 비교하십시오.
어떻게 할 수 있습니까?
Java에서 2 개의 Map을 가지고 있다고 가정 해 봅시다. map1의 키를 map2의 키와 비교하여 2 개의 맵에 유사한 키가 있는지 확인하려고합니다.다른 해시 맵의 키를 비교하십시오.
어떻게 할 수 있습니까?
당신은지도 수정하지 않는 경우 :
boolean thereAreCommonKeys = !Collections.disjoint(one.keySet(), two.keySet());
을 공통 키 찾기 :
Set<K> commonKeys = new HashSet<K>(one.keySet());
commonKeys.retainAll(two.keySet());
키가 일 경우여야합니다.,이 경우 HashSet 대신 TreeSet을 사용하는 것이 좋습니다. TreeSet을 순서대로 유지하기 때문입니다.
그렇다면 어떻게 그 연기 열쇠를 인쇄 할 수 있습니까? 부울 값을 반환합니다 – Chamal
글쎄, 당신은 다른 키가 있는지 알고 싶었습니다;) –
그가 했어요. 그리고 그것은 저에게 그의 말에서 질문자를 데려가도록 가르쳐 줄 것입니다. 그에 따라 편집 됨. –
그런가요? 당신이 M1에서 제거하지 않는 싶은 경우에 당신이 할 수있는이 m3 = 새 (M1)
Map<Integer, Integer> m1 = new HashMap<Integer, Integer>();
Map<Integer, Integer> m2 = new HashMap<Integer, Integer>();
m1.put(1, 2);
m1.put(2, 3);
m2.put(1, 3);
m2.put(3, 4);
Map<Integer, Integer> m3 = new HashMap<Integer, Integer>(m1);
Set s1 = m1.keySet();
Set s2 = m2.keySet();
System.out.println(s1);
System.out.println(s2);
System.out.println(s1.retainAll(s2));
System.out.println(s1);
System.out.println(s2);
System.out.println(m1);
System.out.println(m3);
이렇게하면 m1에서 항목이 제거됩니다. –
boolean hasOverlap = m1.keySet().retainAll(m2.keySet());
이렇게하면 m1에서 항목이 제거됩니다. –
아니, 이건 내가 다른 곳에서 사용되지 않는 m1에서 가져온 keySet에서 항목을 제거합니다; – Robokop
Wrong : 키셋에서 요소를 제거하면 기본 맵 *에서 해당 항목이 제거됩니다. javadoc를 확인하십시오. –
지도 비교는 Google guava 라이브러리의 Maps.difference(..) 방법으로 쉽게 이루어집니다.
"smiler keys"란 무엇을 의미합니까? –
은 루프를 사용하여 모든 달의 날짜를지도의 키에 매핑하는 것을 의미합니다. 그리고이 날짜에는 다른 값이 있습니다. 그 값을지도의 값으로 넣으십시오. 이제 키와 날짜로 값을 포함하는 또 다른지도가 있습니다. 그래서 나는 similer 날짜가있는 2 개의 맵을 비교하고 싶다. – Chamal