2012-05-04 33 views
-4

如何获取列表中最近的对象? 我试图在列表中获取最新对象

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

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

+4

你是什么意思最近,最后一个元素添加?列表结构无法分辨最后添加的内容。如果你想要列表中的最后一个元素只是'list.get(list.size()-1);' – twain249

+0

我编辑你的代码示例以增加可读性并在'while'中添加一个大括号 - 随意如果这不正确,请编辑。 –

+0

是添加的最后一个元素。 'list.get(list.size()-1)'没有工作,当我尝试它。感谢Paul。 :) –

回答

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循环来做到这一点的一种方法。

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