如何获取列表中的最新对象? 我试过了
int i = 5;
while(i > 0) {
Object o = list.get(list.size() - i);
i--;
}
但无济于事,我可能做错了,但如果我不知道如何解决我的错误:/ (问题是它仍然给我整个清单)
答案 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