如何获取列表中最近的对象? 我试图在列表中获取最新对象
int i = 5;
while(i > 0) {
Object o = list.get(list.size() - i);
i--;
}
但无济于事,我可能是做错了,但如果我就是我没有意识如何解决我的错误:/ (问题是,它仍然是给我的整个列表)
如何获取列表中最近的对象? 我试图在列表中获取最新对象
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
}
我认为你希望你的代码,以改变原来的名单,但是这是一个错误的假设,因为代码只得到一个该列表所持有的对象不会被删除它。然后你丢弃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);
}
这是一个很好的问题,你几乎有正确的答案。中心思想是,列表中的项目按照您添加它们的顺序显示,因此要获取最近的项目,您需要以相反的顺序通过列表。这是用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
你是什么意思最近,最后一个元素添加?列表结构无法分辨最后添加的内容。如果你想要列表中的最后一个元素只是'list.get(list.size()-1);' – twain249
我编辑你的代码示例以增加可读性并在'while'中添加一个大括号 - 随意如果这不正确,请编辑。 –
是添加的最后一个元素。 'list.get(list.size()-1)'没有工作,当我尝试它。感谢Paul。 :) –