SCJP 1.6版考題 211

出自 陳富國維基館
前往: 導覽搜尋

Given:
11.   public class Key{
12.          private long id1,
13.          private long id2;
14.
15.         //class Key methods
16. }


A programmer is developing a class Key, that will be used as a key in a standard java.util.HashMap.

Which two methods should be overridden to assure that Key works correctly as a key? (Choose two.)
   A. public int hashCode()
   B. public void hashCode()
   C. public int compareTo(Object o)
   D. public boolean equals(Object o)
   E. public boolean compareTo(Key k)



解答


Ans: AD

解說: 此題問說,一個程式設計師正在開發一個類別Key,這個類別將當成一個鍵值使用於 java.util.HashMap中,          那二個方法應該被覆寫以保證Key類別以鍵值的形式正確地運作?
         一個物件被放在HashMap中,是靠著一個鍵值來進行物件的索引。
           
          hashCode 用來計算一個物件的雜湊值
          equals 用來比較二個物件的內含是否一樣

          一般來說,會先用hashCode計算雜湊值以索引出物件在Map中的位置,由於不同的物件有可能會有相同的雜湊值,
          若發生此種現象(碰撞),則必須再用更精確的比較方法equals來找出在Map中的物件。

          雜湊在各位的資料結構課程中會有一些概念的解說,不妨可以回頭看一下資料結構中對雜湊的介紹。