You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中是否有无需重复变量名即可获取ArrayList/数组最后一个元素的简写方式?

Java获取集合/数组最后一个元素的简写方案

原生Java在21版本之前没有内置的list.get(-1)语法支持,负数索引会直接抛出IndexOutOfBoundsException,但有多种方案可以实现无需重复变量名的简写需求:

  • 方案1:Java 21+ 原生内置方法
    Java 21引入了SequencedCollection接口,所有常见的List实现(比如ArrayList)都实现了该接口,直接调用内置的getLast()方法即可:
// 单一层级获取最后一个元素
var lastElement = list.getLast();
// 示例嵌套场景写法
var LastPageOfLastBook = MyLibraryVar.Books.getLast().Pages.getLast();

同时该接口还提供了removeLast()方法,删除最后一个元素的同时直接返回被删除的元素,完全匹配删除赋值的需求。

  • 方案2:借助第三方工具类
    如果使用的Java版本低于21,可以用主流工具库封装好的现成方法:
    • Guava库:使用Iterables.getLast()
    import com.google.common.collect.Iterables;
    // 空列表会抛出NoSuchElementException
    var lastElement = Iterables.getLast(list);
    // 支持自定义空列表默认值
    var lastElementOrDefault = Iterables.getLast(list, null);
    
    • Apache Commons Collections库:使用ListUtils.last()
    import org.apache.commons.collections4.ListUtils;
    var lastElement = ListUtils.last(list);
    
  • 方案3:自定义工具方法
    如果不想引入第三方依赖,可以自己封装通用静态工具方法,一次封装全项目复用:
// 针对List的封装
public static <T> T last(List<T> list) {
    if (list == null || list.isEmpty()) {
        throw new IllegalArgumentException("List不能为空或null");
    }
    return list.get(list.size() - 1);
}

// 针对数组的封装
public static <T> T last(T[] array) {
    if (array == null || array.length == 0) {
        throw new IllegalArgumentException("数组不能为空或null");
    }
    return array[array.length - 1];
}

使用时的嵌套场景写法:

var LastPageOfLastBook = last(last(MyLibraryVar.Books).Pages);

补充说明:Java原生数组同样不支持负索引,除了上述自定义工具方法,也可以先通过Arrays.asList()转为List后使用上述集合类的简写方案。

内容的提问来源于stack exchange,提问作者jsonphy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 00:48:03