获取列表中的最新对象

时间:2012-05-04 00:11:44

标签: java list

如何获取列表中的最新对象? 我试过了

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

但无济于事,我可能做错了,但如果我不知道如何解决我的错误:/ (问题是它仍然给我整个清单)

3 个答案:

答案 0 :(得分: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
}

答案 1 :(得分: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);
}

答案 2 :(得分:0)

这是一个很好的问题,你几乎得到了正确的答案。中心思想是列表中的项目按照您添加它们的顺序显示,因此要获取最新项目,您需要反向浏览列表。这是使用for循环执行此操作的一种方法。

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