Ste*_*vko 69 java collections refresh sortedset treeset
我有一个使用Comparable <>定义'自然排序顺序'的对象.这些存储在TreeSet中.
除了删除和重新添加对象之外,还有另一种方法可以在更新用于定义排序顺序的成员时更新排序吗?
tuc*_*uxi 14
正如其他人所指出的那样,没有内置的方式.但是您总是可以使用您选择的构造函数对TreeSet进行子类化,并添加所需的功能:
public class UpdateableTreeSet<T extends Updateable> extends TreeSet<T> {
// definition of updateable
interface Updateable{ void update(Object value); }
// constructors here
...
// 'update' method; returns false if removal fails or duplicate after update
public boolean update(T e, Object value) {
if (remove(e)) {
e.update(value);
return add(e);
} else {
return false;
}
}
}
Run Code Online (Sandbox Code Playgroud)
从那时起,您将不得不调用((UpdateableTreeSet)mySet).update(anElement, aValue)更新排序值和排序本身.这确实需要您update()在数据对象中实现其他方法.
我有一个类似的问题,找到了这个帖子和tucuxi的答案(谢谢!),基于此我实现了自己的UpdateableTreeSet.我的版本提供了手段
UpdateableTreeSet从用户隐藏了很多复杂性.除了延迟批量更新/删除之外,tucuxi所示的单元素更新/删除仍然可用于该类.
更新2012-08-07:该类在一个小GitHub存储库中可用,包括带有原理图示例代码的介绍性自述文件以及显示如何(不)更详细地使用它的单元测试.
| 归档时间: |
|
| 查看次数: |
22547 次 |
| 最近记录: |