2014-02-17 2 views
0

두 개의 서로 다른 해시 맵을 결합하려고합니다. 그러나이 두 맵에는 중복 된 항목이 있으므로 결합 후 thoese 항목을 제거해야합니다.java 중복 된 항목없이 두 개의 해시 맵을 결합하는 방법

HashMap의 1 :
100 헬로
101 좋은

의 HashMap 2

100 헬로 후
102 좋은

가 결합 해시 맵 정상적으로 보이는 예

좋아요 :

100 안녕하세요
(101) 좋은
(102) 내가 putall을 시도하지만, 중복 항목을 제거하지 않는 것 같습니다있다

좋아. 누군가 나를 빨리 도와 줄 수 있습니까?

+3

사용하시는 코드를 보내 주시겠습니까? –

+2

그냥'putAll'이 문제가 아니라는 것을 보여주기 위해서 : http://ideone.com/CWMRDp –

+0

HashMap은 중복을 허용하지 않지만 이것을 결정하기 위해 equals 메소드를 사용합니다. 키가 Integer가 아니라 구현되지 않은 다른 객체가 올바르게 같다고 결론 지을 수 있습니다. 확실한 답을 얻으려면 그걸 보여줘야합니다. – Radiodef

답변

1

나는 귀하의 접근 방식에 문제가 보이지 않습니다.

HashMap<String, Object> first = new HashMap<String, Object>(); 
HashMap<String, Object> second = new HashMap<String, Object>(); 

first.put("100", "hello"); 
first.put("101", "nice"); 
second.put("100", "hello"); 
second.put("102", "good"); 

first.putAll(second); 
System.out.println(first); 

출력

{102=good, 101=nice, 100=hello} 

시도 HashMaps을 당신의 취급이 올바른지 확인합니다.

+0

맞아요. 키에 OP가 사용하고있는 클래스가이 클래스를 따르지 않는 것처럼 보입니다. 그들은 자신의 코드를 게시해야합니다. 또한 [ 'Are'작품은 "답변이 유효합니까?"] (http://meta.stackexchange.com/questions/118992/are-works-for-me-answers-valid) – Radiodef

+0

사실,하지만 OP를 허용합니다. 그의 접근 방식을 다시 확인하십시오. 나는 누군가의 코드를 다시 게시하지 않았다는 것을 알아 두십시오. – Warlord

1

HashMap의 키는 Set으로 표시되어 있으므로 중복 될 수 없으므로 두 맵을 병합하면 작업이 완료됩니다.

0

세 번째 해시 맵 map3에 두 개의 해시 맵 map1과 map2를 추가 할 수 있습니다. 모든 데이터 유형의 수퍼 클래스가 Object 클래스 인 것처럼 값 입력 유형을 Object로 선언하기 만하면됩니다.

HashMap<String, Integer> map1 = new HashMap<String, Integer>(); 
HashMap<String, String> map2 = new HashMap<String, String>(); 

HashMap<String, Object> map3; 
map3 = new HashMap<>(); 

map3.putAll(map1); 
map3.putAll(map2);