글
관련 이론 및 문법
(TreeSet 클래스 참고)
http://kkikkodev.tistory.com/119
(Comparable 인터페이스 참고)
http://kkikkodev.tistory.com/166
문제 의도
한 프로그래머가 TreeSet 에 대해서 Drink 객체의 add 작업을 반복하고, 각 Drink 객체의 이름을 출력합니다. 출력 결과를 고르는 문제입니다.
답안
B
풀이 방법
Drink 클래스는 Comparable 인터페이스를 상속하고 있고, 멤버 변수로는 String 형 name 을 가지고 있습니다. 또한, Comparable 인터페이스에 있는 compareTo 추상 메소드를 overriding 하고 있습니다. 하지만, compareTo 메소드는 무조건 0 만 반환하도록 overriding 했습니다.
그리고, 밑 부분의 코드를 살펴보면, 2 개의 Drink 객체를 생성합니다. (one, two 라는 인스턴스 변수로) 그 후에, one 의 멤버 변수 name 에는 "Coffee" 를 대입하고, two 의 멤버 변수 name 에는 "Tea" 를 대입합니다. 그 다음, TreeSet 객체를 생성합니다. (set 이라는 인스턴스 변수로) 이 set 에 one 객체를 add 합니다. 객체를 TreeSet 에 추가할 때, 객체의 compareTo 메소드를 호출하여 반환값이 0 이 나오면, 이 객체는 TreeSet 에 이미 존재하는 것으로 간주하여, TreeSet 에 추가하지 않게 됩니다.
Drink 클래스의 compareTo 메소드는 무조건 0 을 반환하도록 되어 있습니다. 따라서, 처음에 one 객체를 추가할 때는, 일단, TreeSet 에 객체가 하나도 없기 때문에 비교 대상이 없으므로, 추가가 됩니다. 그 다음에, two 객체를 add 할 때는, one 객체와 같은 객체인지 비교를 하게 되는데 (compareTo 메소드를 호출하여) 결과는 무조건 0 이 반환되므로, 같은 객체로 간주하여, two 객체를 TreeSet 에 추가하지 못하게 됩니다. TreeSet 에는 one 객체만 존재하게 되고, 결과적으로, TreeSet 의 모든 Drink 객체들의 name 을 출력해보면, one 객체의 name 인 "Coffee" 만 출력되게 되어, 답안은 B 가 됩니다.
'4.1) OCJP > 1Z0-851 / 2012-08-28' 카테고리의 다른 글
OCJP (1Z0-851 / 2012-08-28 / Exam C) - 31 번 (0) | 2016.11.13 |
---|---|
OCJP (1Z0-851 / 2012-08-28 / Exam C) - 30 번 (0) | 2016.11.13 |
OCJP (1Z0-851 / 2012-08-28 / Exam C) - 29 번 (0) | 2016.11.13 |
OCJP (1Z0-851 / 2012-08-28 / Exam C) - 28 번 (0) | 2016.11.13 |
OCJP (1Z0-851 / 2012-08-28 / Exam C) - 27 번 (0) | 2016.11.12 |
OCJP (1Z0-851 / 2012-08-28 / Exam C) - 25 번 (0) | 2016.11.12 |
OCJP (1Z0-851 / 2012-08-28 / Exam C) - 24 번 (0) | 2016.11.12 |
OCJP (1Z0-851 / 2012-08-28 / Exam C) - 23 번 (0) | 2016.11.12 |
OCJP (1Z0-851 / 2012-08-28 / Exam C) - 22 번 (2) | 2016.11.12 |
OCJP (1Z0-851 / 2012-08-28 / Exam C) - 21 번 (4) | 2016.11.12 |
RECENT COMMENT