[問題] HashSet 比較物件時的問題

看板java作者時間17年前 (2008/09/15 01:46), 編輯推噓3(302)
留言5則, 2人參與, 最新討論串1/2 (看更多)
有個自訂類別 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

09/15 02:04, , 1F
你可以繼承LinkHashSet 包一層add . 或者採用委讓機制.
09/15 02:04, 1F

09/15 02:06, , 2F
簡單來說,「有辦法」. ~_~
09/15 02:06, 2F

09/15 02:08, , 3F
話說回來 拿set.contains(obj) 這個方法來測比較實際=.=a
09/15 02:08, 3F

09/15 13:30, , 4F
其實你可以用boolean Set.add(Object o)
09/15 13:30, 4F

09/15 13:31, , 5F
他會回傳一個boolean 無法add(false)就是重覆了, 洽API
09/15 13:31, 5F
文章代碼(AID): #18pKtw9q (java)
文章代碼(AID): #18pKtw9q (java)