将链表的最终值保存到Java中的变量中



我想使用迭代器将最终值保存在5000000个整数的LinkedList上。对于这项任务,我需要遍历整个列表(我知道这不是最有效的方法(。这是我的代码:

//method 1:
ListIterator ls = list.listIterator();
while (ls.hasNext()) {
var save = ls.next(); //my attempt to save the final value
ls.next();
}

对我来说,保存变量最后一个索引处的值的最佳方式是什么?

对我来说,将最后一个索引处的值保存到变量

请记住,有5.000.000 elements,访问最后一个元素的最有效方法是利用LinkedList实现Deque接口的事实:

List<Integer> list = new LinkedList<>();
.....    
Integer last = ((Deque<Integer>) list).peekLast();

注意:

  • 列表中的任何元素都可能是null,如果您试图将null分配给int变量,则应用程序将崩溃
  • 为了首先调用方法peekLast(),您必须将列表强制转换为适当的类型

但是,如果您为此任务不惜一切代价have to use aListIterator,那么我建议您修复您提供的代码:

public static Optional<Integer> getLast(List<Integer> list) {
ListIterator<Integer> ls = list.listIterator();
Integer last = null;
while (ls.hasNext()) {
last = ls.next();
}
return Optional.ofNullable(last);
}
ListIterator<Integer> ls = list.listIterator();
int last = -1;
while (ls.hasNext()) {
last = ls.next();
}

或者,在浏览列表时不要保存值:

while (ls.hasNext()) {
ls.next();
}
// Assuming the list isn't empty:
var last = ls.previous();

您可以使用

list.getLast();

以获取列表中的最后一项。

相关内容

  • 没有找到相关文章