Java - 以有序的方式保留外部集合

时间:2012-08-10 16:59:26

标签: java collections

假设外部集合具有以下两种方法:add(BusiessObject)到最后和remove(BusinessObject)。现在,我知道我想要的对象的顺序,我想确保外部集合保持该顺序。所以,如果我从BO1,BO2,BO3开始,那么如果我删除BO2并再次添加它,我想确保订单是相同的。

我正在考虑保留我的现有项目列表,按照我想要的顺序,每次插入时,我都会清除外部列表,然后添加排序列表中的所有元素。还有其他想法吗?

3 个答案:

答案 0 :(得分:2)

如果您无法控制外部集合,我认为您提出的解决方案就是这样。要保持Java端集合的有序性,您不需要继续调用sort方法,只需使用有序集合,如TreeSetTreeMap,或任何实现SortedSet的集合或SortedMap,用于存储您的数据。您仍然需要实施ComparableComparator,因为@AdelBoutros说。

顺便说一句,我对你的外部收藏感到好奇。你能说出来是什么吗?如果我们知道它是什么,也许我们可以用另一种方法思考。

答案 1 :(得分:1)

Collections sorting内置的java有什么问题?

您只需使您的对象实现Comparable界面和VOILA:)

答案 2 :(得分:0)

也许使用适配器模式非常适合这里。在您的情况下,创建一个实现List(或更适合您订购目的的集合)的类,并具有外部集合。在适配器的方法中,您可以按照自己的方式操作外部集合的元素。即使您正在使用您在问题中提到的想法,适配器也是一个很好的设计。

另一种方式是逆向。扩展外部集合并具有List / Queue / Set。因此,您的客户端代码将使用此新的扩展类作为包装器。然后在你的列表中你显然会使用排序和Comparable / Comparator技术。