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

如何将泛型ArrayList元素转为long基本类型及编写元素与long对比方法?

嘿,这两个问题我来帮你一步步解决!

问题1:将泛型ArrayList中的元素转换为long基本类型

既然你已经确认ArrayList里的元素都是Long类型,那转换起来就很直接,有两种常用方式:

  • 自动拆箱法:Java 5及以上支持自动拆箱,把Long对象直接转成long基本类型就行,代码示例:
ArrayList<T> array = ...; // 你的泛型数组
long targetValue = (Long) array.get(0); // 取第一个元素转成long
  • longValue()方法:调用Long类的longValue()方法主动拆箱,效果和上面一致:
long anotherValue = ((Long) array.get(0)).longValue();

因为你已经保证数组里都是Long,所以强制转换完全安全,不用额外做校验。

问题2:编写searchSum方法对比元素与long数值

按照你给出的方法定义,结合已知数组全是Long类型的前提,我们可以这样实现:

方式1:直接利用强制转换+自动拆箱

public static <T> void searchSum(ArrayList<T> array, long n) {
    for (int index = 0; index < array.size(); index++) {
        // 把泛型元素强制转为Long,自动拆箱后和long n做值对比
        if ((Long) array.get(index) == n) {
            // 这里可以根据你的需求做操作,比如打印索引、计数、返回结果等
            System.out.println("索引" + index + "的元素与n相等");
        }
    }
}

方式2:限定泛型上限(更安全)

如果想让方法的泛型约束更明确,避免不必要的强制转换,可以把泛型限定为T extends Long,代码更简洁:

public static <T extends Long> void searchSum(ArrayList<T> array, long n) {
    for (int index = 0; index < array.size(); index++) {
        // 直接自动拆箱对比,无需强制转换
        if (array.get(index) == n) {
            System.out.println("索引" + index + "的元素与n相等");
        }
    }
}

这里要说明下:Long对象和long基本类型用==对比时,Long会自动拆箱成long,对比的是实际数值,完全符合你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:14:51