有一堂课
public class File {
private String format;
}
//создаю список и помещаю в него объекты
List<File> filesFrom = new ArrayList<>();
filesFrom.add(file1);
filesFrom.add(file2);
filesFrom.add(file3);
filesFrom.add(file4);
filesFrom.add(file5);
format某些对象的字段值是相同的。例如:file1 - "txt", file2 - "txt", file3 - "doc", file4 - "jpg",file5 - "txt"
我需要删除具有重复字段值的对象,以便最终只保留具有不同格式的对象。也就是说,对象file1, file3,file4
我正在尝试执行以下操作
for (int i = filesFrom.size() - 1; i > -1 ; i--) {
if (filesFrom.get(0).getFormat().equals(filesFrom.get(i).getFormat())){
filesFrom.remove(i);
}
}
事实证明,列表开头和结尾的所有文件都被删除,只有格式doc和jpg. 请告诉我如何达到预期的结果。
并且可能通过iterator它会更正确吗?但我不明白如何
覆盖 equals 和 hashCode 方法,使用 set 而不是 List 并感到高兴。
带有地图的粘性选项。具有 equals 和 hashCode 的变体更好。这个选项是一个加号,只是因为键的值没有磨损,但第一个添加的值仍然存在
没有重新定义是可能的
equals(), hashCode(),只需要一个getterprivate String format;