2012-05-04 9 views
-4

リスト内の最新のオブジェクトを取得するにはどうすればよいですか? 私はリスト内の最新のオブジェクトを取得する

int i = 5; 
while(i > 0) { 
    Object o = list.get(list.size() - i); 
    i--; 
} 

を試してみましたが、無駄に、私は間違ったことをやっている可能性がありますが、私は場合、私は私のミスを修正する方法unware午前:/ (問題は、それはまだ私に全体のリストを与えているです)

+4

あなたが最も最近のことで何を意味するか、最後の要素が追加しましたか?リスト構造には、最後に何が追加されたかを示す方法がありません。 'list.get(list.size()-1);' – twain249

+0

のリストの最後の要素が必要な場合は、コード例を読みやすくするために、whileの中かっこを追加しました。これが正しくない場合は編集してください。 –

+0

はい最後の要素が追加されました。 'list.get(list.size()-1)'私はそれを試したときにdidntの仕事。そして、ポールに感謝します。 :) –

答えて

1

あなたはそれを反復し、リストを逆転できる:

// 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 
} 
0

私はあなたが元のリストを変更するようにコードを期待していると思いますが、コードは単純になるので、これは間違った仮定でありますリストに保持されているオブジェクトは削除されません。 それ。次に、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); 
} 
0

あなたは正しい答えを得ています。主な考え方は、リスト内のアイテムが追加された順番で表示されるため、最新のアイテムを取得するには、逆順でリストを通過する必要があります。 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 
関連する問題