Java List.remove不使用List <! - ?扩展AppData - >

时间:2014-04-09 20:43:29

标签: java

我正在处理一个项目,但我仍然坚持为什么我的对象不会从列表中删除。

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?

1 个答案:

答案 0 :(得分:2)

正如@Keppil建议的那样,问题可能出在equals实施您正在使用的AppData类。

来自List#remove documentation

  

...删除索引i最低的元素,使(o==null ? get(i)==null : o.equals(get(i)))(如果存在这样的元素)。

因此,如果该项目未被删除,则会告诉我们该条件未得到满足,这表明equals未正确实施您正在使用该类的AppData (正如你所说AppData是一个接口)。