结合以下方面的Java中最好的列表/集合/数组是什么:
- 保持添加元素的顺序
- 如果可能的话,向前和向后迭代
- 当然性能好
我想到了一个 LinkedList,然后我可以插入元素来add(0, element)
模拟相反的顺序。大多数时候我会使用反向迭代,所以使用它我可以迭代低谷。如果没有,我可以list.listIterator().hasPrevious()
。
但是有更好的方法吗?
结合以下方面的Java中最好的列表/集合/数组是什么:
我想到了一个 LinkedList,然后我可以插入元素来add(0, element)
模拟相反的顺序。大多数时候我会使用反向迭代,所以使用它我可以迭代低谷。如果没有,我可以list.listIterator().hasPrevious()
。
但是有更好的方法吗?
ArrayList 可能是你最好的选择。您可以通过以下方式迭代它:
for (ListIterator it = list.listIterator(list.size()); it.hasPrevious();) {
Object value = it.previous();
}
LinkedList 可以工作,但它会产生更多的对象创建开销,因为您需要为存储的每个元素实例化一个 Link。
如果您可以通过索引获取并希望遍历集合,那么您可以使用 aList
并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 不保持顺序。