[J2SE] Java HashSet觀念請教
各位先進午安,請教一個HashSet觀念:
import java.util.*;
class KeyMaster
{
public int i;
public KeyMaster(int i) { this.i = i; }
public boolean equals(Object o)
{
return i == ((KeyMaster)o).i;
}
public int hashCode() { return i; }
}
public class MapIt
{
public static void main(String[] args)
{
Set<KeyMaster> set = new HashSet<KeyMaster>();
KeyMaster k1 = new KeyMaster(1);
KeyMaster k2 = new KeyMaster(2);
set.add(k1); set.add(k1);
set.add(k2); set.add(k2);
System.out.print(set.size() + ":");
//k2.i = 1;
System.out.print(set.size() + ":");
set.remove(k1);
System.out.print(set.size() + ":");
set.remove(k2);
System.out.print(set.size());
}
}
結果是2:2:1:0,沒有問題;但如果我把//k2.i = 1;這行程式Enable,
結果會變成2:2:1:1。請問,這裡面造成變化的原因是?謝謝回答!
--
天堂保險公司 PTT通訊處 半調子保險顧問 Harifucks
E-mail: harifucks@ptt.cc
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 219.81.151.145
※ 編輯: Harifucks 來自: 219.81.151.145 (05/02 12:43)
推
05/02 12:57, , 1F
05/02 12:57, 1F
推
05/02 13:01, , 2F
05/02 13:01, 2F
推
05/02 13:03, , 3F
05/02 13:03, 3F
→
05/02 13:05, , 4F
05/02 13:05, 4F
推
05/02 13:07, , 5F
05/02 13:07, 5F
推
05/02 14:06, , 6F
05/02 14:06, 6F
→
05/02 14:08, , 7F
05/02 14:08, 7F
推
05/02 14:20, , 8F
05/02 14:20, 8F
→
05/02 14:21, , 9F
05/02 14:21, 9F
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 2 篇):