【发布时间】:2012-11-07 00:10:00
【问题描述】:
我有那个结构的集合。我没有重复,但是当我打电话时:
set.add(element) -> 已经有确切的元素我想替换旧的。
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 "";
}
@Override
public boolean equals(Object obj) {
if(this == obj) return true;
if(!(obj instanceof WordInfo)) return false;
return this.plik.equals(((WordInfo) obj).plik);
}
@Override
public int hashCode() {
return this.plik.hashCode();
}
}
【问题讨论】:
-
无法理解代码sn-p与问题的关系。你能解释一下,在你的代码中设置它在哪里?另外,如果你的对象完全一样,那你为什么要替换?
-
@YogendraSingh - OP 希望能够用较新的
equals()替换集合中的旧WordInfo,但不是同一个对象。 (注意equals()测试忽略了wystapienia的值。) -
@TedHopp:谢谢,但
return this.plik.equals(((WordInfo) obj).plik);仍然会返回true,不是吗?? -
@YogendraSingh - 我的意思是两个
WordInfo对象可以是equals()而不是==。当两个是equals()而不是==时,OP 希望能够在Set中用另一个替换一个。 OP 的问题是:如何进行替换。 -
@TedHopp:我试图用 OP 来理解问题本身,即
why?,我仍然不相信(可能这是伪示例)。我看到你对how的回答,这很好。我现在就离开它。感谢您的投入。
标签: java replace set duplicates