我正在处理一个项目,但我仍然坚持为什么我的对象不会从列表中删除。
List<? extends AppData> allData = adm.findAll(AdSortOrder.KeyAsc);
AppData data = adm.find(key);
System.out.println("allData before = "+allData.size()); // 988
allData.remove(data); // DOES NOT ACTUALLY REMOVE
System.out.println("allData after = "+allData.size()); // 988. Shouldn't it be 987 now?
答案 0 :(得分:2)
正如@Keppil建议的那样,问题可能出在equals
实施您正在使用的AppData
类。
...删除索引
i
最低的元素,使(o==null ? get(i)==null : o.equals(get(i)))
(如果存在这样的元素)。
因此,如果该项目未被删除,则会告诉我们该条件未得到满足,这表明equals
未正确实施您正在使用该类的AppData
(正如你所说AppData
是一个接口)。