将链表的最终值保存到Java中的变量
Save the final value of a linked list to a variable in 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();
}
将最后一个索引处的值保存到变量的最佳方法是什么?
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();
从列表中获取最后一项。
What is the best way for me to save the value at the last index to a
variable?
请记住,有 5.000.000 elements
最 有效的 访问最后一个元素的方法是利用 LinkedList 实现了 Deque 接口:
List<Integer> list = new LinkedList<>();
.....
Integer last = ((Deque<Integer>) list).peekLast();
注:
- 列表中的任何元素都可以是
null
,如果您尝试将 null
分配给 int
变量,应用程序将会崩溃;
- 为了调用方法
peekLast()
首先你必须将列表转换为合适的类型。
但是,如果您 have to use a
ListIterator
不惜一切代价完成此任务,那么我建议您修复您提供的代码:
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);
}
我想使用迭代器将最终值保存在包含 5000000 个整数的 LinkedList 中。对于这个作业,我需要遍历整个列表(我知道这不是最有效的方法)。这是我的代码:
//method 1:
ListIterator ls = list.listIterator();
while (ls.hasNext()) {
var save = ls.next(); //my attempt to save the final value
ls.next();
}
将最后一个索引处的值保存到变量的最佳方法是什么?
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();
从列表中获取最后一项。
What is the best way for me to save the value at the last index to a variable?
请记住,有 5.000.000 elements
最 有效的 访问最后一个元素的方法是利用 LinkedList 实现了 Deque 接口:
List<Integer> list = new LinkedList<>();
.....
Integer last = ((Deque<Integer>) list).peekLast();
注:
- 列表中的任何元素都可以是
null
,如果您尝试将null
分配给int
变量,应用程序将会崩溃; - 为了调用方法
peekLast()
首先你必须将列表转换为合适的类型。
但是,如果您 have to use a
ListIterator
不惜一切代价完成此任务,那么我建议您修复您提供的代码:
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);
}