更改java中LinkedList中元素的值

时间:2014-10-19 07:17:04

标签: java list pointers linked-list listiterator

我定义了Candidate个对象的链接列表。我需要为每个元素存储初始的下一个元素(因为我稍后会更改顺序,并且需要初始顺序)。

public class Candidate {
    //data members
    private String prefrence;
    private Candidate next;
    public void setNext(Candidate c){ next=c; }
    //rest of the class body
}

在另一个课程中,我需要创建一个候选人列表(candidateList),我必须在其中初始化它,

while(input) {
    Candidate c = new Candidate(field[0], field[1], field[2], ...);
    candidateList.add(c);
}

现在,我需要在c.next中存储列表的下一个元素。我还需要迭代整个列表并更改列表中候选项的首选项。但是,我不知道如何访问列表中的元素。

基本上,我知道c ++等价物,指向Candidate(ptr),ptr->datamember=abc;的指针可以完成这项工作。但我是Java新手,无法在这里获得指针机制。我打算这样的事情:

ListIterator<Candidate> itr = candidateList.listIterator();
while(itr.hasNext()) {
    Candidate c = itr.next(); //I am supposing this creates a copy while i need a reference
    func(c.pref);
    c.pref = abc;
    c.next = def;
}

简而言之,我需要更改链接列表中元素的值,而不是更改元素本身。

1 个答案:

答案 0 :(得分:1)

itr.next()的{​​{1}}的{​​{1}}不会创建副本。

ListIterator

它返回对列表中存储的LinkedList对象的引用。因此,您可以更新返回的public E next() { checkForComodification(); if (nextIndex == size) throw new NoSuchElementException(); lastReturned = next; next = next.next; nextIndex++; return lastReturned.element; } ,这将更新列表中的Candidate对象。