リスト内の最新のオブジェクトを取得するにはどうすればよいですか? 私が試してみました
int i = 5;
while(i > 0) {
Object o = list.get(list.size() - i);
i--;
}
しかし、役に立たないので、間違っている可能性がありますが、間違いを修正する方法がわからない場合:/ (問題は、リスト全体がまだ表示されていることです)
リストを逆にして、それを繰り返すことができます:
// Your original list
List<Object> list = new ArrayList<Object>(); // Populated elsewhere
// Make a copy, so you don't corrupt the original list
List<Object> reverseList = new ArrayList<Object>(list);
// Reverse the order of its elements
Collections.reverse(reverseList);
// Now iteration will be in "latest added first" order - ie LIFO
for (Object o : reverseList) {
// Do something with o
}
それは良い質問であり、あなたはほとんど正しい答えを持っていました. 中心的な考え方は、リスト内の項目は追加した順序で表示されるため、最新の項目を取得するには、リストを逆にたどる必要があるということです。for ループを使用してこれを行う 1 つの方法を次に示します。
ArrayList<String> myList = new ArrayList<String>();
myList.add("one");
myList.add("two");
myList.add("three");
myList.add("four");
for (int index = myList.size() - 1; index >= 0 ; index--) {
System.out.println(myList.get(index));
}
上記のコードの出力は次のとおりです。
four
three
two
one
コードが元のリストを変更することを期待していると思いますが、コードは単にリストに保持されているオブジェクトを取得し、それを削除しないため、これは間違った仮定です。次に、o が保持するオブジェクトを破棄するため、メソッドが機能しているかどうかをテストする方法はありません。これを解決するには、メソッドから生成されたものを保存して、それが機能するかどうかをテストする必要があります。
int i = 5;
List savedJunk = new ArrayList();
while(i > 0) {
Object o = list.get(list.size() - i);
savedJunk.add(o);
i--;
}
for (Object foo : savedJunk) {
System.out.println(foo);
}