인프런 커뮤니티 질문&답변

인프린님의 프로필 이미지
인프린

작성한 질문수

김영한의 실전 자바 - 중급 2편

큐 자료 구조

Queue질문

작성

·

140

0

안녕하세요.

Queue 질문이 있어서 글 씁니다.

add()와 offer()

remove()와 poll() 은 각각 동작도 같고 반환 타입도 같던데 검색해보면 예외를 발생시키느냐 마냐의 차이라고 나와서요. 실제로 offer() 까보면 return add()라고 되어 있기도 하고 ...

무슨 차이인지 그리고 어떨 때 어떤 걸 쓰는 게 좋을지 보충 설명 부탁드립니다.

답변 1

2

안녕하세요. 인프린님, 공식 서포터즈 코즈위버입니다.

add() / remove() 는 동작을 수행할 수 없을 때 에외를 던지고, offer() / poll()은 동작을 수행할 수 없을 떄 boolean 값을 반환합니다. 이는 큐에 데이터를 담거나 꺼내는 행위가 실패할 수도 있음을 전제하는가 아닌가에 따라 다르게 사용합니다.

 

가령 큐의 크기에 특별히 제한을 두지 않는 경우(큐는 무제한으로 늘어날 수 있다고 전제한 것) add 를 사용하는 것이 적절합니다. 큐에 데이터를 담을 수 없다면 개발자가 생각하지 못한 예외상황이 발생한것입니다.

 

한편 큐의 크기를 10개로 제한하는 상황이라면 큐에 데이터를 추가하는 행위는 언제든지 실패할 수 있으며(10개가 꽉 찬 경우) 이는 예외상황이라고 보기 어렵습니다. 이럴 때는 offer 를 사용하는 것이 적절합니다. 개발자가 예상하고 있는 상황이기 때문입니다.

 

감사합니다.

인프린님의 프로필 이미지
인프린

작성한 질문수

질문하기