Java中最好的list / set / array是什么,它结合了以下几个方面:
我想到了一个LinkedList,然后我可以通过add(0, element)
插入元素来模拟相反的顺序。大多数时候我将使用向后迭代,所以使用这个我可以迭代低谷。
如果没有,我可以list.listIterator().hasPrevious()
。
但有更好的方法吗?
答案 0 :(得分:0)
如果您可以通过索引获取并希望迭代集合,那么您可以使用List
和get(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。