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

标签 java arrays dictionary hyperlink

我有一个保存链接的数组。每个链接都有一个名为 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/

相关文章:

linux - 用数据填充 shell 脚本数组

python - 我应该将值存储在字典中还是即时计算?

java - 按日期分组对象 : am I an idiot?

java - 在模糊的位置绘制形状

c++ - 为什么这个结构数组上的代码有效?

java - 如何从 List<Map<String, Object>> 中删除键/值对

java - 如何在 GeoTools 中添加航点项目

java - 更改 ActionPerformed 上的 JButton 颜色

java - JEE6 - CDI - 执行时的 DI

arrays - 将数组传递到 JSON 文件中的每个对象。 (过程 JSON SAS)