gpt4 book ai didi

java - 如何修改一个字段的一个公共(public)字段...如link.next.next.next(.next*n) n次

转载 作者:行者123 更新时间:2023-12-01 12:58:19 26 4
gpt4 key购买 nike

我有一个保存链接的数组。每个链接都有一个名为 next 的公共(public)字段,它可以保存另一个链接,该链接可以保存更多链接等。当我想删除东西时我可以做

array[x].next = array[x].next.next;

这将删除第二项。但我希望能够删除任何项目,那么如何将其放入带有变量的表单中呢?等式将是这样的:如果我想删除项目 n 我会这样做

array[x](.next*(n-1)) = array[x](.next*n);

如果 n = 4 我想扩展到

array[x].next.next.next = array[x].next.next.next.next;

希望我的问题很清楚。我需要知道如何这样做,因为我无法在链接类中设置 getter 或任何其他代码,并且由于我是代码的唯一所有者,所以我不会错误地设置我的字段。 Java。

最佳答案

正如其他答案中提到的,您正在实现的是一个链接列表,您可能最好利用 Java 的库。

为了解决您提出的问题,您可能需要一个为您提供对第 n 跳的引用的函数

Link getLink(Link link, int hops){
Link retVal = link;
for (int i = 0; i < hops; i++){
if (link == null){
//hops is too large. Do something to indicate error
}
else{
retVal = retVal.next;
}
}
return retVal;
}

然后就可以执行

getLink(array[x],2).next = getLink(array[x],4);

或者如果你想使用反射(不推荐,因为反射相对昂贵),那么你可以这样做

Link myLink = array[x];
Field next = Link.class.getField("next");
//assume proper error handling
for (int i = 0; i < hops; i++){
myLink = (Link) next.getObject(myLink);
//assume proper error handling
}

关于java - 如何修改一个字段的一个公共(public)字段...如link.next.next.next(.next*n) n次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23718058/

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