Java相当于C#Sorted List

时间:2011-04-09 18:44:42

标签: c# java sortedlist

  

可能重复:
  sorted collection in java

我想知道Java是否有自己的Sorted List版本,或者我是否需要创建自己的版本。如果删除了某些内容,我希望列表自动更新。例如,如果我从列表的开头删除某些内容,或者甚至在中间删除某些内容,我希望它背后的所有内容都在列表中向上移动,并且剩余的空值空间将被删除。

3 个答案:

答案 0 :(得分:4)

如果你真的 之后相当于一个.NET SortedList,它实际上是按其键排序的地图,那么最接近的等价物可能是TreeMap。那个实际上更像SortedDictionary而不是SortedList,因为它是一棵树而不仅仅是一个列表,但它可能是最接近的可用选项。

但是,您描述的内容更像ArrayList,类似于.NET的List<T>

答案 1 :(得分:3)

java.util.PriorityQueue

  

基于优先级堆的无界优先级队列。优先级队列的元素根据其自然顺序排序,或者由队列构造时提供的比较器排序,具体取决于使用的构造函数。优先级队列不允许null元素。依赖于自然排序的优先级队列也不允许插入不可比较的对象(这样做可能会导致ClassCastException)。

这基本上是一个heap,允许从前面按顺序读取,并允许从中间通过Iterator.remove删除,但迭代器不以任何特定顺序迭代。

如果你想要的东西可以按顺序迭代,而且不需要欺骗,那么TreeSet是你最好的选择。如果您需要欺骗,那么请查看Apache common TreeBag等库。

答案 2 :(得分:3)

嗯,Java有很多比数组更聪明的列表实现,虽然它听起来并不像你真的想要一个从你的描述中排序的列表。

ArrayListLinkedList会执行您想要的插入或移除元素:

  

public Object remove(int index) - 删除此列表中指定位置的元素。将任何后续元素向左移位(从索引中减去一个)。

你真的想要一个排序列表,或者只是一个比数组更高级别的东西吗?