使用這個Java代碼:比從端點迭代ArrayList更快嗎?
// create the items list
List<Item> items = new ArrayList<Item>();
// ... (add some elements into the list so that it is not empty)
// iterating ArrayList<Item> from right to left we find the position
// based on the `if` condition satisfied for an item property
int pos = 0;
for (int j = items.size() - 1; j >= 0; j--) {
Item item = items.get(j);
if (item.property <= 7) {
pos = j + 1; break;
}
}
// add new item on the found above position
Item it = new Item();
if (pos == items.size()) {
items.add(it);
} else {
items.add(pos, it);
}
我wodering如果這一說法Item item = items.get(j);
會採取一些額外的時間,因爲所使用的ArrayList
的執行。例如,假設我們需要將新項目添加到最後,然後通過在項目列表上調用get()
將僅從左側進行迭代,這是多餘的。我期望使用Deque
結構而不是ArrayList
。
你能推薦什麼,也許我錯了,因爲新的元素也可以在開始時添加,儘管目標是從右側迭代到左側。
我建議你使用LinkedList實現java.util.Deque在這裏檢查:http://docs.oracle.com/javase/6/docs/api/java/util/LinkedList.html – 2012-07-23 14:53:27