SCJP題庫第204題
Given:
11. public class Person{
12. private name;
13. public Person(String name){
14. this.name = name;
15. }
16. public int hashCode(){
17. return 420;
18. }
19. }
Which statement
is true? //那一個敘述是正確的?
A. The time to find the value from HashMap with a Person key depends on the size of the map.
用一個Person的鍵值從HashMap 找一筆資料的時間取決於map的大小。
用一個Person的鍵值從HashMap 找一筆資料的時間取決於map的大小。
B. Deleting a Person key from a HashMap will delete all map entries for all keys of type Person.
從HashMap 中刪除掉一個Person的鍵值將會刪除對型態為Person的全部鍵值的所有對映(map)的入口。
從HashMap 中刪除掉一個Person的鍵值將會刪除對型態為Person的全部鍵值的所有對映(map)的入口。
C. Inserting a second Person object into a HashSet will cause the first Person object to be removed as a duplicate.
插入一個第二個Person物件到HashSet中將會導致第一個Person物件被當成重複而被移除。
插入一個第二個Person物件到HashSet中將會導致第一個Person物件被當成重複而被移除。
D. The time to determine whether a Person object is contained in a HashSet is constant and does NOT depend on the size of the map.
決定一個Person物件是否存在於一個HashSet的時間是一個常數時間,並且不是取決於map的大小。
決定一個Person物件是否存在於一個HashSet的時間是一個常數時間,並且不是取決於map的大小。
Ans: A
解說:
雜湊是用HashCode(雜湊值)來當成map的入口索引,使用湊雜的原則是不同的物件算出來的雜湊值要儘量避免一樣,如果一樣,也就代表不同的物件其map中的索引入口一樣,這些不同的物件但因雜湊值一樣,會被map以線性的方式串起來,也就是說,若要找一個物件,是計算其雜湊值找出map的入口(entry),如果這個入口的物件不只一個,那就要用線性搜尋的方式一個一個去找。
在這個題目,Person的鍵值(HashCode)產生都是常數值,420,這樣會導致所有的Person物件都會被串到420這個map入口,尋找物件是否存於這個map的時間要看有多少的物件在裏面,也就是說,找尋的時間跟map的大小有關。
雜湊是用HashCode(雜湊值)來當成map的入口索引,使用湊雜的原則是不同的物件算出來的雜湊值要儘量避免一樣,如果一樣,也就代表不同的物件其map中的索引入口一樣,這些不同的物件但因雜湊值一樣,會被map以線性的方式串起來,也就是說,若要找一個物件,是計算其雜湊值找出map的入口(entry),如果這個入口的物件不只一個,那就要用線性搜尋的方式一個一個去找。
在這個題目,Person的鍵值(HashCode)產生都是常數值,420,這樣會導致所有的Person物件都會被串到420這個map入口,尋找物件是否存於這個map的時間要看有多少的物件在裏面,也就是說,找尋的時間跟map的大小有關。
Comments