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

如何将Vector<Object>中的数值转换为int类型以筛选奇数?

解决Vector元素转int并筛选奇数的问题

问题根源

你直接执行int d = vector.get(i)报错,是因为Vector<Object>中存储的是数值包装类对象(比如Integer、Long),而非基本类型int。Java不允许直接将Object强制转换为基本类型,必须先转为对应的包装类,再转成int。

解决方案

情况1:确定Vector中仅存储Integer对象

这是最常见的场景,直接将Object强转为Integer后,会自动拆箱为int:

Vector<Object> vector = new Vector<>();
vector.add(1);
vector.add(4);
vector.add(7);

for (int i = 0; i < vector.size(); i++) {
    // 先转成Integer,再自动拆箱为int
    int num = (Integer) vector.get(i);
    if (num % 2 != 0) {
        System.out.println(num);
    }
}

情况2:Vector中混合多种数值类型(如Long、Double)

如果容器里可能存在其他数值包装类,需要先判断类型再转换,避免ClassCastException:

Vector<Object> vector = new Vector<>();
vector.add(2);
vector.add(5L);
vector.add(9.0);

for (Object obj : vector) {
    int num;
    // 先判断对象类型,再转换为int
    if (obj instanceof Integer) {
        num = (Integer) obj;
    } else if (obj instanceof Long) {
        num = ((Long) obj).intValue();
    } else if (obj instanceof Double) {
        // 注意:Double转int会丢弃小数部分,按需处理
        num = ((Double) obj).intValue();
    } else {
        // 非数值类型,跳过处理
        continue;
    }
    if (num % 2 != 0) {
        System.out.println(num);
    }
}

更优方案:使用泛型避免强制转换

如果一开始就确定要存储整数,直接使用Vector<Integer>,代码更安全简洁,无需强制转换:

Vector<Integer> vector = new Vector<>();
vector.add(3);
vector.add(6);
vector.add(9);

// 增强for循环直接遍历int类型
for (int num : vector) {
    if (num % 2 != 0) {
        System.out.println(num);
    }
}

注意事项

  • 不要直接将Object强转为int:基本类型与Object无继承关系,必须通过包装类中转。
  • 处理非数值元素:如果Vector中可能存在非数值对象,一定要用instanceof做类型检查,否则会抛出ClassCastException。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 10:32:28