小编Eru*_*uza的帖子

对于直接从集合中提取的对象,为什么".contains"会返回false?

private Collection<Episode> episodes = new ArrayList<Episode>();

public void checkEpisodes(String string) {
    for(Episode episode : this.episodes){
        System.out.println(string + this.episodes.contains(episode));
    }
}
Run Code Online (Sandbox Code Playgroud)

为什么以上代码打印错误?

我正在使用一个集合,因为这是ormlite允许的.我认为这个问题可能是由ormlite引起的,因为一个非常相似的类有一个相同的方法来打印true.

我要做的是修改返回的对象:

public Episode findEpisode(int num) {
    checkEpisodes("Find: ");
    for(Episode episode : this.episodes) {
        if(episode.getNumber()==num) {
            return episode;
        }
    }
    return null;
}
Run Code Online (Sandbox Code Playgroud)

但是不保存对该对象的修改.我假设因为它不包含在Collection中.

我的解决方案,但有效但不理想:

public void modifyEpisode(Episode episode) {
    checkEpisodes("Modify: ");
    for (Iterator<?> it = this.episodes.iterator(); it.hasNext();) {
        if (((Episode) it.next()).getNumber()==episode.getNumber()) {
            it.remove();
            addEpisode(episode.getNumber(), episode.getLink(), episode.getLinkLabel());
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

如果您需要查看更多我的代码,请问,项目有点涉及,但它托管在sourceforge上,如果有必要,我可以发布一个链接.

java collections ormlite

4
推荐指数
1
解决办法
1389
查看次数

标签 统计

collections ×1

java ×1

ormlite ×1