我需要对一个列表进行排序,该列表的项目是描述如何相对于同一列表中的其他项目对项目进行排序的对象。这些项目是动态加载的,所以我无法确定它们是否已经开始订购。
我应该查看哪些列表? ArrayList没有insertBefore()或insertAfter()等方法。 LinkedLists可能但我不确定LinkedLists的Java实现是否提供了这样的方法。有什么想法吗?
注意:我应该澄清我的数组中没有重复...
答案 0 :(得分:1)
您应该使用Collections.sort(List,Comparator)
,而不是编写自己的排序例程。这使用提供的比较器对任何List
进行排序。
您需要实现一个comparator,以产生所需的顺序。
如果这不适用于手头的问题,请提供一个示例来澄清您的要求。
答案 1 :(得分:1)
ArrayList没有insertBefore()或insertAfter()等方法。
不,但它确实有indexOf(o)
和add(o, index)
,足以轻松实施insertBefore
和insertAfter
。
答案 2 :(得分:1)
如果要插入新项目并保持集合排序,可以在Java中使用priorty队列类。集合不允许您存储重复项。有关优先级队列的更多信息,您可以查看此答案
答案 3 :(得分:0)
尝试SortedSet课程。
如果您正确实现了Comparable接口,它会自动为您排序。
答案 4 :(得分:0)
如果你可以使obejcts实现Comparable,那么调用Collections.sort(myArrayList)将整理任何List对象,包括ArrayList。
或者使用Collections.sort(myArrayList,myComparator)和一个适用的Comparator