首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何修改...的字段的字段如在link.next.next.next(.next*n)中n次

如何修改...的字段的字段如在link.next.next.next(.next*n)中n次
EN

Stack Overflow用户
提问于 2014-05-18 10:36:15
回答 1查看 43关注 0票数 0

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

代码语言:javascript
复制
    array[x].next = array[x].next.next;

这将删除第二项。但是我希望能够删除任何项,那么如何将其转换为具有变量的表单呢?等式应该是这样的:如果我想删除n项,我会这样做

代码语言:javascript
复制
    array[x](.next*(n-1)) = array[x](.next*n);

当n=4时,它将扩展为

代码语言:javascript
复制
    array[x].next.next.next = array[x].next.next.next.next;

希望我的问题是清楚的。我需要知道如何做到这一点,因为我不能设置一个getter或任何其他代码到我的链接类,因为我是我的代码的唯一所有者,我不会间接设置我的字段。Java语言。

EN

回答 1

Stack Overflow用户

发布于 2014-05-18 20:56:26

因此,假设我们有array[x].next.next.next.next。编译器接受这一点,并告诉运行时如何到达我们的第四个元素。它是如何做到这一点的?好吧..。

代码语言:javascript
复制
Entry current = array[x];
current = current.next;
current = current.next;
current = current.next;
current = current.next;

如果我们将其转换为for循环,则会得到以下结果:

代码语言:javascript
复制
Entry current = array[x];
for ( int i = 0; i < 4; i++ ) {
    current = current.next;
}

事实上,这看起来很像java.util.LinkedList的方式:

代码语言:javascript
复制
/**
 * Returns the indexed entry.
 */
private Entry<E> entry(int index) {
    if (index < 0 || index >= size)
        throw new IndexOutOfBoundsException("Index: "+index+
                                            ", Size: "+size);
    Entry<E> e = header;
    if (index < (size >> 1)) {
        //  vvv  Looks familiar?
        for (int i = 0; i <= index; i++)
            e = e.next;
        //  ^^^
    } else {
        for (int i = size; i > index; i--)
            e = e.previous;
    }
    return e;
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23728087

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档