このJavaコードの使用:
// 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);
}
使用されているため、このステートメントItem item = items.get(j);
の実行に余分な時間がかかるかどうか疑問に思ってArrayList
います。たとえば、新しいアイテムを最後に追加する必要があると想像してください。次にget()
、アイテムリストを呼び出すことにより、左からのみ反復します。これは冗長です。Deque
の代わりに構造体を使用することを期待しますArrayList
。
目標は右側から左側に繰り返すことですが、最初に新しい要素を追加することもできるので、私が間違っているかもしれませんが、何をお勧めしますか。