如何列出维护顺序和反向迭代的元素?

时间:2013-01-20 19:18:25

标签: java data-structures collections linked-list

Java中最好的list / set / array是什么,它结合了以下几个方面:

  • 维护添加元素的顺序
  • 尽可能地向前和向后迭代
  • 当然是好的表现

我想到了一个LinkedList,然后我可以通过add(0, element)插入元素来模拟相反的顺序。大多数时候我将使用向后迭代,所以使用这个我可以迭代低谷。 如果没有,我可以list.listIterator().hasPrevious()

但有更好的方法吗?

2 个答案:

答案 0 :(得分:0)

如果您可以通过索引获取并希望迭代集合,那么您可以使用Listget(index)允许您获取列表中该位置的对象。数组允许您这样做,您可以正常引用索引,但是如果您的数组可能会增长,那么Collection将更容易使用。

您可以使用List.size()循环使用for和元素,而不是使用Iterator对象,这样您就可以在列表中向前和向后迭代。例如:

List<AnObject> myList = new ArrayList<AnObject>;
// Add things to the list

for (int i = 0 ; i < myList.size; i++) {
  AnObject myObject = myList.get(i);
} 

for (int i = myList.size()-1 ; i <= 0 ; i--) {
  AnObject myObject = myList.get(i);
}    

Set不适用,因为Set不维护排序。

答案 1 :(得分:0)

ArrayList可能是你最好的选择。您可以通过以下方式迭代它:

for (ListIterator it = list.listIterator(list.size()); it.hasPrevious();) {
    Object value = it.previous();
}

LinkedList可以工作但是它会有更多的对象创建开销,因为你需要为你存储的每个元素实例化一个Link。