방법 :
좋아, 여기에 기본적으로 당신의 HashMap를 반대하는 일부 코드입니까?
public HashMap getDuplicateValues(HashMap in)
{
// Clone input HashMap because we're removing stuff from it
in = (HashMap)in.clone();
HashMap rval = new HashMap();
Object[] keys = in.keySet().toArray();
// iterate through all keys
for(int x=0;x<keys.length;x++) {
Object value = in.get(keys[x]);
in.remove(keys[x]);
// if value is in input HashMap, store it in duplicate HashMap because it has another value
if(in.containsValue(value)) {
rval.put(keys[x],value);
}
// if value is in duplicate HashMap, store it also because it HAD another value earlier
if(rval.containsValue(value)) {
rval.put(keys[x],value);
}
}
return(rval);
}
이 메소드는 입력 HashMap에있는 모든 중복 값에 대해 키/값 쌍을 리턴합니다.
테스트 코드 :
HashMap map = new HashMap();
map.put("1","2");
map.put("2","1");
map.put("3","8");
map.put("4","4");
map.put("5","6");
map.put("6","8");
map.put("7","3");
map.put("8","4");
map.put("9","4");
HashMap dups = getDuplicateValues(map);
System.out.println("MAP = "+map);
System.out.println("DUP = "+dups);
출력 :
MAP = {3=8, 2=1, 1=2, 7=3, 6=8, 5=6, 4=4, 9=4, 8=4}
DUP = {3=8, 6=8, 4=4, 9=4, 8=4}
명확하게 이해하지 못했습니다. –
@ Meenakshi : 위 예제에서 중복 값이 있으므로 (1,7) 및 (3,7)을 원하십니까? – Syam
(3, 7)은 (는) 중복 값 7이므로 다른 해시 맵에서이 쌍 (3, 7)을 원합니다. 나는 그렇게 생각한다 –