【发布时间】:2014-10-02 08:33:50
【问题描述】:
我的 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();
【问题讨论】:
-
你能分享将笑话添加到 JokeHolder 类的代码吗?