ArrayList,在一个 ArrayList 上设置值会更改另一个 ArrayList 上的值

发布于 2024-12-10 18:43:44 字数 842 浏览 0 评论 0原文

正如标题所示,我有两个 ArrayList。奇怪的是,在一个数组列表上设置一个值会改变另一个数组列表的值。

一些信息:这些是 Entry 类型的 ArrayList,每个数组都包含一个金额和一个值(这就是您在括号中看到的内容)。我正在尝试转动这个数组: [(5,2)(2,5)(3,2)]

到这些 [(1,2)] 和 [(4,2)(2,5)(3,2)] 中。在这种情况下,i == 1,remainingAmt == 1。

ArrayList<Entry> firstHalf = new ArrayList<Entry>();
    ArrayList<Entry> secondHalf = new ArrayList<Entry>();

    for(int j = 0; j<=i;j++){
        firstHalf.add(rleAL.get(j));
    }
    for(int k = i; k<rleAL.size(); k++){
        secondHalf.add(rleAL.get(k));
    }
    System.out.println(firstHalf);//gives (5,2)
    firstHalf.get(i).setAmount(remainingAmt);
    System.out.println(firstHalf);//gives (1,2) *CORRECT*
    secondHalf.get(0).setAmount(rleAL.get(i).getAmount() - remainingAmt);
    System.out.println(firstHalf);//gives (0,2) *WRONG*

As the title says, I have two ArrayLists. Strangely, setting a value on one arraylist changes that of another.

Some information: these are ArrayLists of type Entry, each of which holds an amount and a value (which is what you see in the parentheses). I'm trying to turn this array:
[(5,2)(2,5)(3,2)]

into these [(1,2)] and [(4,2)(2,5)(3,2)]. i == 1 in this case, and remainingAmt == 1.

ArrayList<Entry> firstHalf = new ArrayList<Entry>();
    ArrayList<Entry> secondHalf = new ArrayList<Entry>();

    for(int j = 0; j<=i;j++){
        firstHalf.add(rleAL.get(j));
    }
    for(int k = i; k<rleAL.size(); k++){
        secondHalf.add(rleAL.get(k));
    }
    System.out.println(firstHalf);//gives (5,2)
    firstHalf.get(i).setAmount(remainingAmt);
    System.out.println(firstHalf);//gives (1,2) *CORRECT*
    secondHalf.get(0).setAmount(rleAL.get(i).getAmount() - remainingAmt);
    System.out.println(firstHalf);//gives (0,2) *WRONG*

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

可是我不能没有你 2024-12-17 18:43:44

这没什么不寻常的——如果底层对象在列表之间共享,一个对象的更改将反映在另一个对象中。如果需要独立的列表,则需要通过从头开始创建新对象或将初始对象复制到列表 #2 中的新对象来使用每个列表中的不同对象。

Nothing unusual there--if the underlying objects are shared between lists, a change in one object will be reflected in the other. If you need the lists to be independent, you need to use different objects in each list by either creating new objects from scratch, or copying the initial object to a new object in list #2.

ら栖息 2024-12-17 18:43:44

这里唯一的问题是你的标题。您根本没有“在一个 ArrayList 上设置值”。您已经在一个对象中设置了一个值,该对象是两个 ArrayList 的成员,因此它当然会出现在两个 ArrayList 中。

The only problem here is in your title. You haven't 'set a value on one ArrayList' at all. You've set a value in an object which is a member of both ArrayLists, so of course it shows up in both.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文