2014-10-19 2 views
-1

KeyNotFoundException을 Java HashMap에 붙잡고 catch 블록의 키를 맵에 추가 할 수 있습니까?KeyNotFoundException에서 catch 블록에 키 추가하기

예를 들어 HashMap의 키에 값을 추가하고 싶습니다. 해당 키가 없으면 KeyNotFoundException이 발생합니다.

한 가지 대안은 매번 키가 있는지 확인하는 것입니다. 그렇지 않으면 키를 추가 한 다음 값을 추가하십시오. 존재하는 경우 키에 직접 값을 추가하십시오. 그러나 if 조건에는 많은 오버 헤드가 있습니다. 따라서이 예외가 발생하면 catch 절에 키와 값을 추가 한 다음 올바르게 처리 할 수 ​​있습니까?

+1

HashMap에서 키를 찾을 수없는 경우 예외가 throw되지 않고 단순히 null을 반환합니까? – KoA

+1

이 질문은 그것이 진짜가 아닌 것에 관한 것이기 때문에 주제에서 벗어난 것처럼 보입니다. –

답변

1

키가없는 경우 map.put(key,value)은 값을 단순히 추가합니다. 키가 있으면 map.put(key,value)은 이전 값을 겹쳐 쓰게됩니다. 어쨌든 예외는 발생하지 않습니다. 왜 예외를 던지고 싶습니까?

키가 이미있을 때 현재 값을 변경하려면 키가 있는지 확인하고 그렇지 않은 경우 추가하는 것이 좋습니다. 그렇지 않으면 예외를 throw 할시기를 알기 위해 키가 있는지 (!map.containsKey(key) 또는 map.get(key)==null) 확인해야하며 catch 블록에 키를 추가하는 논리를 작성해야하므로 아무 것도 저장하지 않으면 코드가 읽기 어려워집니다.

0

당신은이 모든 것에 대해 100 % 오인하고 있습니다.

자바 HashMap

없음에 KeyNotFoundException를 잡을 수있는 방법이 자바에서 그러한 예외는 없기 때문에, 거기에.

지도의 키를 catch 블록에 추가 하시겠습니까? 당신도 같은 코드를 컴파일 할 수 없기 때문에

없음

,

예를 들어, 나는 해시 맵의 키에 값을 추가하고 싶습니다. 해당 키가 없으면 KeyNotFoundException이 발생합니다.

아니요.

한 가지 대안은 키가 있는지 확인하는 것입니다.

Map.containsKey().

그렇지 않은 경우 키를 추가하고 값을 추가하십시오.

존재하는 경우 직접 값을 키에 추가하십시오. 그러나 if 조건에는 많은 오버 헤드가 있습니다.

아니요. HashMap은 키 조작에 대해 O (1)입니다.그래서

,이 예외가 발생,

은 '이 예외는'발생되지 않습니다. 존재하지도 않습니다.

catch 절에 키와 값을 추가 한 다음 올바르게 진행할 수 있습니까?

아니요, 코드를 컴파일 할 수 없기 때문입니다.

귀하의 질문은 거짓 전제에 근거합니다.

+0

@downvoter [Javadoc] (http://docs.oracle.com/javase/8/docs/api/index.html)에서이 가상의 예외가 어디에서 발견되는지 정확히 기재하십시오. – EJP

관련 문제