【发布时间】:2012-11-19 03:44:01
【问题描述】:
我有一套这样的结构。如何删除该类的相同对象的重复项?等于表示字段 File plik 相同。
编辑: 但是问题更大我没有重复但我想用新的替换旧的 SET 成员。
没有第三方库。
import java.io.*;
public class WordInfo implements Serializable {
File plik;
Integer wystapienia;
public WordInfo(File plik, Integer wystapienia) {
this.plik = plik;
this.wystapienia = wystapienia;
}
public String toString() {
// if (plik.getAbsolutePath().contains("src") && wystapienia != 0)
return plik.getAbsolutePath() + "\tWYSTAPIEN " + wystapienia;
// return "";
}
}
编辑
我没有这个HashCodeBuilder我想用Java标准库
public int hashCode() {
return new HashCodeBuilder(17, 31).append(plik).append(wystapienia).toHashCode();
}
public boolean equals(Object obj) {
File f = (File) obj;
return(plik.getAbsoluteFile().equals(f.getAbsolutePath()));
}
【问题讨论】:
-
覆盖
equals和hashcode...一组自动禁止重复。 -
你不必使用 Apache 的 HashCodeBuilder 来实现 hashCode。您可能可以使用
File实现的hashCode 方法,假设有一个。应该很容易检查...在我输入此内容两秒钟后,@BheshGurung 提供了一个答案,确切地说明了如何进行检查! -
@mre 请看编辑
标签: java set duplicates