如何获取数组列表的最后一个值?
当前回答
由于数组列表中的索引从0开始,并在实际大小前一位结束,因此返回最后一个数组列表元素的正确语句将是:
Int last = mylist.get(mylist.size()-1);
例如:
如果数组列表的大小为5,那么size-1 = 4将返回数组的最后一个元素。
其他回答
使用lambdas:
Function<ArrayList<T>, T> getLast = a -> a.get(a.size() - 1);
如解决方案中所述,如果List为空,则抛出IndexOutOfBoundsException。一个更好的解决方案是使用Optional类型:
public class ListUtils {
public static <T> Optional<T> last(List<T> list) {
return list.isEmpty() ? Optional.empty() : Optional.of(list.get(list.size() - 1));
}
}
如你所料,列表的最后一个元素作为Optional返回:
var list = List.of(10, 20, 30);
assert ListUtils.last(list).orElse(-1) == 30;
它还可以优雅地处理空列表:
var emptyList = List.<Integer>of();
assert ListUtils.last(emptyList).orElse(-1) == -1;
这应该做到:
if (arrayList != null && !arrayList.isEmpty()) {
T item = arrayList.get(arrayList.size()-1);
}
考虑空列表的一行代码如下:
T lastItem = list.size() == 0 ? null : list.get(list.size() - 1);
或者如果你不喜欢空值(性能不是问题):
Optional<T> lastItem = list.stream().reduce((first, second) -> second);
如果可以的话,将ArrayList替换为ArrayDeque,它有方便的方法,如removeLast。
推荐文章
- 指定的子节点已经有一个父节点。你必须先在子对象的父对象上调用removeView() (Android)
- 对于一个布尔字段,它的getter/setter的命名约定是什么?
- 如何获得当前屏幕方向?
- 如何在Android中渲染PDF文件
- 如何计算一个元素在列表中出现的次数
- c++中类似于java的instanceof
- 我如何解决错误“minCompileSdk(31)指定在一个依赖的AAR元数据”在本机Java或Kotlin?
- 如何POST表单数据与Spring RestTemplate?
- Mockito中检测到未完成的存根
- 我应该如何复制字符串在Java?
- “while(true)”循环有那么糟糕吗?
- 这个方法签名中的省略号(…)是干什么用的?
- Java:如何测试调用System.exit()的方法?
- 带有返回类型的Java方法在没有返回语句的情况下编译
- Java“此语言级别不支持lambda表达式”