Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 获取列表中最近的对象_Java_List - Fatal编程技术网

Java 获取列表中最近的对象

Java 获取列表中最近的对象,java,list,Java,List,如何获取列表中最近的对象? 我试过了 int i = 5; while(i > 0) { Object o = list.get(list.size() - i); i--; } 但没有用,我可能做错了,但如果我是,我不知道如何纠正我的错误:/ (问题是它仍然在给我整个列表)您可以将列表反转,然后迭代: // Your original list List<Object> list = new ArrayList<Object>(); // Pop

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

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
}
//您的原始列表
List List=新建ArrayList();//在别处居住
//复制一份,这样就不会损坏原始列表
列表反向列表=新的ArrayList(列表);
//颠倒其元素的顺序
收藏。反向(反向列表);
//现在迭代将以“最新添加的第一个”顺序-即后进先出
for(对象o:反向列表){
//用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));
}

你所说的最近添加的最后一个元素是什么意思?列表结构无法判断最后添加的内容。如果希望列表中的最后一个元素是
list.get(list.size()-1)
我编辑了您的代码示例以使其更具可读性,并在
中添加了一个右括号,如果不正确,请随意编辑。是添加的最后一个元素
list.get(list.size()-1)
在我尝试时不起作用。谢谢你,保罗一旦你得到了对象o,你要用它做什么?扔掉它?你怎么知道这个代码“不起作用”?非常不清楚的问题。您想从列表中删除该元素,还是只获取对它的引用(就像您现在所做的那样)?
four
three
two
one