Tag: insert order

列出维护排序的实现

Java中是否存在基于提供的Comparator维护订单的现有List实现? 可以通过以下方式使用的东西: Comparator cmp = new MyComparator(); List l = new OrderedList(cmp); l.add(someT); 以便插入someT ,以便根据cmp维护列表中的顺序 (关于@andersoj的建议我正在完成我的问题,还有一个请求) 此外,我希望能够按排序顺序遍历列表而不删除元素,即: T min = Const.SMALLEST_T; for (T e: l) { assertTrue(cmp.compare(min, e) >= 0); min = e; } 应该通过。 欢迎所有的建议(除了告诉我在无序的完整列表中使用Collections.sort ),但是,我更喜欢java.*或者最终的org.apache.*因为此时很难引入新的库。 注意:(UPDATE4)我意识到这种列表的实现会有不足的性能。 有两种一般方法: 使用链接结构(种类)B树或类似 使用数组和插入(使用二进制搜索) 没有1. CPU缓存未命中问题否2.在数组中移位元素有问题。 UPDATE2: TreeSet不起作用,因为它使用提供的比较器( MyComparator )来检查是否相等,并基于它假定元素相等并排除它们。 我需要那个比较器只用于排序,而不是“唯一性”过滤(因为元素按其自然顺序不相等) UPDATE3: PriorityQueue不能作为List (因为我需要)工作,因为没有办法按照它“排序”的顺序遍历它,要获得排序顺序中的元素,你必须从集合中删除它们。 更新: 类似的问题: 一个很好的Java排序列表 Java中的排序数组列表