作者inthehope ()
看板java
標題[問題] HashSet 比較物件時的問題
時間Mon Sep 15 01:46:31 2008
有個自訂類別
public class Node {
public Node(String name,String type){
this.name = name;
this.type = type;}
public int hashCode() {
int result;
result = this.name.hashCode();
return result;}
public boolean equals(Object other){
if(((Node)other).name.equals(this.name))
return true;
return false;}
}
public static void main(String[] args)
{
Node n = new Node("Lin","Human");
Node k = new Node("Lin","alien");
public static Set<Node> set = new LinkedHashSet<Node>();
set.add(n);
set.add(k); //會視為相同物件,不加入set
想請問有辦法在判斷是相同物件時執行我想自訂的方法嗎?
比如說:當set.add(k)時發現set裡面有相同物件時執行System.out.print("已有相同物");
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.165.168.39
推 TonyQ:你可以繼承LinkHashSet 包一層add . 或者採用委讓機制. 09/15 02:04
推 TonyQ:簡單來說,「有辦法」. ~_~ 09/15 02:06
→ TonyQ:話說回來 拿set.contains(obj) 這個方法來測比較實際=.=a 09/15 02:08
推 rukawa0328:其實你可以用boolean Set.add(Object o) 09/15 13:30
→ rukawa0328:他會回傳一個boolean 無法add(false)就是重覆了, 洽API 09/15 13:31