• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    미해결

질문드립니다~

21.09.03 11:21 작성 조회수 92

0

안녕하세요, 강의 잘 듣고 있습니다.

강의를 듣다가 궁금한 점이 생겨서 질문 드려요.

offer()과 add(), poll()과 remove() 각각 비슷한 기능을 한다고 생각하는데요,

두 개의 함수 중에 offer와 poll을 사용하신 이유가 궁금합니다!

답변 1

답변을 작성해보세요.

0

안녕하세요 엘사님~

겨울왕국에서 오셨군요 ^^;

질문주신 내용 : offer()과 add(), poll()과 remove() 각각 비슷한 기능을 한다고 생각하는데요,

두 개의 함수 중에 offer와 poll을 사용하신 이유가 궁금합니다!

답변

==>

1. 메소드의 기능은 동일합니다

아래그림에서 보면 기능이 동일합니다.

offer()대신 add(), poll() 대신 remove()를 써도 문제의 답은 동일하게 나옵니다.

다만 실패했을때 리턴타입이 다르죠.

실패했을때 exception처리를 해야하므로 기피하게 되는거 같습니다.

(바꿔 말하면 exception처리를 안해도 되는 메소드를 만든거 같습니다)

그래서 일반적으로 queue가 나오면 offer로 넣고, poll로 빼네죠

자바 코테에서 stack 은 push, pop, peek 와 queue는 offer , poll,peek

이정도만 외우고 있으면 될거 같습니다.(넣고, 빼고, 잠시보기)

최근 코테에도 알게 모르게 스택문제를 응용해서 많이 내고 있습니다.

(눈치 못채게 꼬와서 냅니다 ㅜㅜ)

2).  collection 인터페이스 구조

아래 collection 인터페이스의 대표인 List에 add(), remove()가 어디에나 있는습니다.

제 생각엔 queue에도  add(), remove()가 덤으로 주어진거죠 근데 얘네들은 오류발생시 exception 처리 부분이 있으니까, 별도의 offer(), poll()을 만들어주고 얘네들은 exception처리 안해도 된다하면서

queue에서는 개발자들이 offer, poll을 많이 사용하게 된거 같습니다.