【问题标题】:Android Java ArrayList Iterator.next() or List.get() return always the same ObjectAndroid Java ArrayList Iterator.next() 或 List.get() 总是返回相同的对象
【发布时间】: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 类的代码吗?

标签: java android arraylist


【解决方案1】:

我认为当您将项目添加到列表时迭代器不会“刷新”。也许这会更好。存储你是什么笑话的索引并获得这样的笑话:

public JokeObject GetNextJoke() {
    if (if index < jokeList.size()) {
        lastJokeObj = jokeList.get(i);
        index++;
        return lastJokeObj;
    }

    return null;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-18
    • 1970-01-01
    • 1970-01-01
    • 2013-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多