作者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
1F:推 TonyQ:你可以继承LinkHashSet 包一层add . 或者采用委让机制. 09/15 02:04
2F:推 TonyQ:简单来说,「有办法」. ~_~ 09/15 02:06
3F:→ TonyQ:话说回来 拿set.contains(obj) 这个方法来测比较实际=.=a 09/15 02:08
4F:推 rukawa0328:其实你可以用boolean Set.add(Object o) 09/15 13:30
5F:→ rukawa0328:他会回传一个boolean 无法add(false)就是重覆了, 洽API 09/15 13:31