inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

큐 자료 구조

Queue질문

228

인프린

작성한 질문수 37

0

안녕하세요.

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

add()와 offer()

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

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

java 객체지향 코딩-테스트 알고리즘

답변 1

2

나무늘보

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

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

 

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

 

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

 

감사합니다.

제네릭 타입 매개변수 제한과 관련한 문의입니다.

0

80

3

강의가 좀 버겁다 느껴질 때 학습방법 문의

1

135

4

제네릭 반환값 및 파라미터 선언 방식의 변화 <T> T

0

63

1

new T()가 안 되는 니유

0

102

1

안녕하세요, 문제와 실행 결과가 다른 부분이 있어 제보드립니다.

0

98

2

자바 로드맵 선택 질문

0

111

2

실전 자바 중급 - 2편 후 추천 강의

0

177

2

실프로젝트에서 Java25버전 사용

0

121

1

Arrays.sort

0

68

1

블로그 작성 시, 저작권 문제에 대하여

0

166

1

중급2편 56강의 bucket.add(value); 메서드가 이해가 안됩니다.

0

94

3

pop()과 poll()의 차이

0

94

1

특정 index의 노드 조회하기 질문

0

66

2

List.of() 비어있는 불변 리스트 생성

0

81

2

문제2: 개 타입 반환

0

56

2

[리뷰] 중급2편까지 겨우 완강 했습니다.

0

114

2

문제와 풀이1 Ex2와 Ex3

0

65

2

노드 삭제시 노드 null값으로 초기화

0

78

2

강의영상에 대한 질문

0

57

1

타입 매개변수 제한

0

59

1

compareTo

0

68

1

직접 구현하는 연결리스트 3 - 추가 부분 질문있습니다

0

99

3

섹션 8-58 equals and hashcode 에서 코드가 다르게 생성됨

0

70

2

퀴즈 오류 관련 문의

0

109

1