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

如何在不创建新对象的情况下交换Java Vector中的两个元素?

解决Java中Vector元素引用交换的问题(C++转Java新手指南)

你遇到的报错核心原因是:Java里的Vector.elementAt(i)是返回指定索引元素的方法,它的返回值是一个临时值,不能作为左值被赋值——这和C++中v[i]可以直接读写的逻辑完全不同。

正确的swap方法实现

要交换Vector中两个位置的对象引用,你需要用Vector提供的set(int index, E element)方法来修改指定索引的元素,修改后的swap方法如下:

void swap(int i, int j) {
    vertex temp = v.elementAt(i);
    v.set(i, v.elementAt(j));
    v.set(j, temp);
}

关键说明

  • 这个操作不会创建新的vertex对象,只是交换了Vector内部两个索引位置上的对象引用,完全满足你“不能创建新对象、不影响算法运行”的要求。
  • 额外提示:如果你的场景不需要线程安全,推荐用ArrayList替代Vector,两者用法几乎一致,ArrayList的get(int index)对应Vector.elementAt(i),set方法用法相同,性能会更优。

原代码错误点解释

你原来写的:

v.elementAt(i)=v.elementAt(j);
v.elementAt(j)=temp;

在Java里是非法的,因为elementAt()返回的是对象的引用值,不是可被赋值的变量,必须通过set方法来完成Vector元素的修改。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 20:05:37