gpt4 book ai didi

java - 如何检查变量是否引用 "this"集合中的元素?

转载 作者:行者123 更新时间:2023-12-01 17:51:15 25 4
gpt4 key购买 nike

假设您有一个创建数字列表的类。您可以在任意位置添加数字或删除数字。如果我创建该类的两个实例,listAlistB,我可以对这两个类执行相同的操作。但是,如果我执行以下操作:

List<Integer> listA = new PositionList<>();
Position<Integer> a = listA.add(1);
Position<Integer> b = listA.add(7);
List<Integer> listB = new PositionList<>();
b = listB.add(7);

listA.remove(b)

我不会从 listA 中删除 b 因为该变量现在指向 listB 实例。我正在编写一个方法,该方法应该确保正在操作的任何变量都指向我指定的实例。在 listA.remove(b) 的情况下,我将确保 b 指向我添加到 listA 的 7 。有什么方法可以检查这一点吗?我知道解决此问题的方法是首先不要这样做,但如果我无权进行这些更改,我需要弄清楚如何做到这一点。

最佳答案

一种方法是添加对 Position<T> 的列表引用你返回,并检查里面 remove方法:

class Position<T> {
private final T v;
private final int p;
final PositionList<T> owner;
public T getValue() { return v; }
public int getPosition() { return p; }
Position(T val, int pos, PositionList<T> o) {
v = val;
p = pos;
owner = o;
}
}

class PositionList<T> {
...
public void remove(Position<T> p) {
if (p.owner != this) {
... // Error! Throw an exception or exit
}
...
}
}

关于java - 如何检查变量是否引用 "this"集合中的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49864216/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com