假设外部集合具有以下两种方法:add(BusiessObject)
到最后和remove(BusinessObject)
。现在,我知道我想要的对象的顺序,我想确保外部集合保持该顺序。所以,如果我从BO1,BO2,BO3开始,那么如果我删除BO2并再次添加它,我想确保订单是相同的。
我正在考虑保留我的现有项目列表,按照我想要的顺序,每次插入时,我都会清除外部列表,然后添加排序列表中的所有元素。还有其他想法吗?
答案 0 :(得分:2)
如果您无法控制外部集合,我认为您提出的解决方案就是这样。要保持Java端集合的有序性,您不需要继续调用sort方法,只需使用有序集合,如TreeSet或TreeMap,或任何实现SortedSet的集合或SortedMap,用于存储您的数据。您仍然需要实施Comparable或Comparator,因为@AdelBoutros说。
顺便说一句,我对你的外部收藏感到好奇。你能说出来是什么吗?如果我们知道它是什么,也许我们可以用另一种方法思考。
答案 1 :(得分:1)
Collections sorting内置的java有什么问题?
您只需使您的对象实现Comparable
界面和VOILA:)
答案 2 :(得分:0)
也许使用适配器模式非常适合这里。在您的情况下,创建一个实现List(或更适合您订购目的的集合)的类,并具有外部集合。在适配器的方法中,您可以按照自己的方式操作外部集合的元素。即使您正在使用您在问题中提到的想法,适配器也是一个很好的设计。
另一种方式是逆向。扩展外部集合并具有List / Queue / Set。因此,您的客户端代码将使用此新的扩展类作为包装器。然后在你的列表中你显然会使用排序和Comparable / Comparator技术。