我有一个带有内容的虚拟列表:
index: 0; id:5; content:"foo"; <- oldest
index: 1; id:2; content:"bar"; <- oldest
index: 2; id:5; content: "foobar" <- new entry
我想在比较条目的列表上进行交互,当它找到匹配的id时,它会从List中删除最旧的条目。
我尝试了Java 8 distinct()方法,但它删除了最后一个条目,而不是最旧的两个oldests。
答案 0 :(得分:0)
ALGO: -
1)对例如
的通用类型列表进行排序List<YourPOJO> temp = new ArrayList<YourPOJO>();
YourPOJO类将使用setter getter方法将您提到的所有变量作为类变量。
2)通过在索引变量上的YourPOJO类上实现比较器接口来对列表进行排序。
3)现在执行操作首先将数据复制到相同类型的CopyOnArrayList列表中,然后删除该元素。
4)为什么选择CopyOnArrayList?因为遍历相同的列表并从同一列表中删除元素将抛出并发修改异常,即使您迭代Iterator,因为迭代器实际上不是线程安全的。