Yod*_*oda 22 java replace set duplicates
我有那个结构的集合.我没有重复,但是当我调用: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();
}
}
Run Code Online (Sandbox Code Playgroud)
Pat*_*han 41
在每次添加之前删除:
someSet.remove(myObject);
someSet.add(myObject);
Run Code Online (Sandbox Code Playgroud)
remove将删除任何等于myObject的对象.或者,您可以检查添加结果:
if(!someSet.add(myObject)) {
someSet.remove(myObject);
someSet.add(myObject);
}
Run Code Online (Sandbox Code Playgroud)
哪个更有效取决于你碰撞的频率.如果它们很少见,第二种形式通常只进行一次操作,但是当发生碰撞时它会做三次.第一种形式总是两种.
如果集合中已包含equals()
您尝试添加的元素,则不会添加新元素,也不会替换现有元素。为了保证添加新元素,只需先将其从集合中删除即可:
set.remove(aWordInfo);
set.add(aWordInfo);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
26833 次 |
最近记录: |