[英]Android Java ArrayList Iterator.next() or List.get() return always the same Object
我的ArrayList迭代器或List的get()函數(具有多個索引)始終返回列表的最后一個元素。 我對Java非常陌生,無法理解為什么像C ++這樣的迭代器沒有begin()和end()。 我如何跳到第一個要素? 如果我使用while()和迭代器遍歷具有hasNext()和next()的列表,然后將Log()傳遞到控制台,則如果列表的大小為20,則同一對象有20倍。
賓語:
public class JokeObject implements Serializable {
private static final long serialVersionUID = -1703441755022251852L;
public int num;
public int jokeid;
public String joke;
public int votes;
}
對象持有人類別:
public class JokeHolder {
private ArrayList <JokeObject> jokeList;
private Iterator<JokeObject> jokeIt;
private JokeObject lastJokeObj;
public JokeHolder() {
jokeList = new ArrayList<JokeObject>();
jokeIt = jokeList.iterator();
lastJokeObj = null;
}
public void AddJoke(JokeObject obj) {
this.jokeList.add(obj);
}
public JokeObject GetNextJoke() {
if (jokeIt.hasNext()) {
lastJokeObj = jokeIt.next();
return lastJokeObj;
}
return null;
}
public int GetHolderSize() {
return (jokeList.size());
}
public void SetList(ArrayList<JokeObject> aList) {
jokeList.clear();
jokeList.addAll(aList);
this.jokeIt = this.jokeList.iterator();
}
public void SetLastObj(JokeObject obj) {
this.lastJokeObj = obj;
}
public ArrayList<JokeObject> GetList() {
return jokeList;
}
public JokeObject GetLastObject() {
return lastJokeObj;
}
}
在活動A中:
jokes.AddJoke(obj);
在活動B中:
obj = myJokes.GetNextJoke();
當您將項目添加到列表中時,我認為迭代器不會“刷新”。 也許這會更好。 存儲一個關於您的笑話的索引,並獲得如下笑話:
public JokeObject GetNextJoke() {
if (if index < jokeList.size()) {
lastJokeObj = jokeList.get(i);
index++;
return lastJokeObj;
}
return null;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.