我有一个文本文件,并且其中有一个城市列表:
纽约
洛杉矶
芝加哥
约克
多伦多
…
我会在Java中的列表中加载每一行而没有重复项。我试图加载它,但是当我打印列表时我已经重复了。
private Set<Comune> comunilist;
public ReteStradale(){
comunilist=new HashSet<Comune>();
}
private void loadComuni(String sname){
try{
BufferedReader reader=new BufferedReader(new FileReader(sname));
String id_street=reader.readLine();
while(id_street!=null){
int length=Integer.parseInt(reader.readLine());
String comune_par=reader.readLine();
String comune_arr=reader.readLine();
Comune com=new Comune(comune_par);
comunilist.add(com);
id_street=reader.readLine();
}
}
catch(FileNotFoundException ffe){
System.err.println("Error: the file does not exist!");
}
catch(IOException ioe){
ioe.printStackTrace();
}
}
这是我的代码。请不要考虑元素的名称,而是代码
最佳答案
我认为问题出在“ Comune”类上。您没有向我们显示代码,并且我假设您没有在其中实现hashCode()和equals()。
它们的默认实现(来自Object)基于对象的内存地址而不是其内容。因此,即使您创建两个具有相同城市名称的Comune对象,该Set也将它们视为完全不同的对象。
在这种情况下,您应该将名称直接存储为字符串,或者重写类的两个方法。