SCJP題庫第206題

 
Given:
1. public class Drink implements Comparable{
2.   public String name;
3.   public int compareTo(Object o){
4.     return 0;
5.   }
6. }
and:
20. Drink one = new Drink();
21. Drink two = new Drink();
22. one.name = "Coffee";
23. two.name = "Tea";
24. TreeSet set = new TreeSet();
25. set.add(one);
26. set.add(two);
A programmer iterates over the TreeSet and prints the name of each Drink object. 一個程式設計走訪上面的TreeSet(一個物件集合)並且印出每一個Drink物件的name。

What is the result? 結果是什麼?


A. Tea
B. Coffee
C. Coffee Tea
D. Compilation fails.
E. The code runs with no output.
F. An exception is thrown at runtime.
Ans: B
解說: TreeSet是一個沒有重複物件的集合,類別Drink實作了compareTo方法(這個方法是用來比較2個物件是否一樣,或大或小),這個方法固定傳回0(0代表2個物件比較是相同,實際上沒比較),因此當把二個物件one和two加到TreeSet這個集合時,會使用compareTo來比較集合中是否已經有"相同"的物件在裏面,因此,只有one加入到集合中(第一個),當two要加入到集合中,因為集合加入的方法用compareTo判斷已經有相同的物件one在集合中,two物件就沒有加入集合中。
因此,若印出集合中所有的物件,就只有one一個,而one物件的名稱就是Coffee。

Comments

Popular posts from this blog

Android-使用webview在V3版的Google地圖GPS定位