2013-10-16 5 views
0
HashMap<String, Boolean> mAchBools = new HashMap<String, Boolean>(){{ 
    put("myBool1", false); 
    } 
}; 

HashMap<String, Integer> mAchInts = new HashMap<String, Integer>(){{ 
    put("myInt1", 0); 
    } 
}; 

boolean isEmpty() { 
    for (boolean b : mAchBools.values()) if (b) return false; 
    for (int i : mAchInts.values()) if (i != 0) return false;   
    return true;    
} 

정수를 사용하여 HashMap과 HashMap을 만듭니다. 이제 값이 "비어 있는지"를 확인하고 확인하는 메서드가 필요합니다 (모든 부울은 false이고 모든 정수는 0입니다).Java HashMap 각 Var 및 반환 값 반복 : 부울 부울, 정수 int 오류?

디버거를 실행하고 Hashmap의 부울 값이 거짓이지만 메서드 "isEmpty"가 여전히 false를 반환한다는 것을 알 수 있습니다.

"isEmpty"검사가 실패하는 이유는 무엇입니까? 부울과 부울의 차이점이라고 생각하지만 확실하지 않습니다.

+0

두 번째지도에 '0'이 아닌 정수 값이 포함되어있을 수 있습니까? –

+0

'Map' 값을 'null'일 수 있기 때문에 루핑 할 때 원시적 인 것을 사용하지 않을 것입니다. 그러면 NPE를 던질 것입니다. –

+4

여기서 제공 한 코드는 우분투에서 테스트 할 Eclipse를 사용하여 내 PC에서 'true'를 반환합니다. –

답변

1

Java는 부울 <> 부울 및 정수 <> 정수 사이에서 자동으로 변환합니다. 따라서 코드는 기술적으로 정확합니다.

+1

이것은 완전히 사실이 아닙니다. 여러분은'Boolean'과'boolean'을 서로 바꾸어 쓸 수 있습니다 (대부분은). –

+0

당신이 맞습니다. 보리스. –