如何获取数组列表的最后一个值?


当前回答

这应该做到:

if (arrayList != null && !arrayList.isEmpty()) {
  T item = arrayList.get(arrayList.size()-1);
}

其他回答

这应该做到:

if (arrayList != null && !arrayList.isEmpty()) {
  T item = arrayList.get(arrayList.size()-1);
}

使用lambdas:

Function<ArrayList<T>, T> getLast = a -> a.get(a.size() - 1);

考虑空列表的一行代码如下:

T lastItem = list.size() == 0 ? null : list.get(list.size() - 1);

或者如果你不喜欢空值(性能不是问题):

Optional<T> lastItem = list.stream().reduce((first, second) -> second);

在Kotlin中,你可以使用最后的方法:

val lastItem = list.last()

在Java中没有获得列表的最后一个元素的优雅方法(与Python中的items[-1]相比)。

你必须使用list.get(list.size()-1)。

当处理由复杂方法调用获得的列表时,解决方法在于临时变量:

List<E> list = someObject.someMethod(someArgument, anotherObject.anotherMethod());
return list.get(list.size()-1);

这是避免丑陋且昂贵甚至无法工作的版本的唯一选择:

return someObject.someMethod(someArgument, anotherObject.anotherMethod()).get(
    someObject.someMethod(someArgument, anotherObject.anotherMethod()).size() - 1
);

如果能在Java API中引入对这个设计缺陷的修复,那就太好了。