将链表的最终值保存到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);
    }