-4

如何获取列表中最新的对象?我努力了

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

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

4

3 回答 3

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
}
于 2012-05-04T00:19:32.993 回答
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);
}
于 2012-05-04T00:23:27.420 回答
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
于 2012-05-04T00:48:24.993 回答