Java return Null 的迭代器

Java Iterator that return Null

我正在尝试使用 Iterator 在 java 中编写一个方法,它会遍历销售商品的一些评论并 return 根据评论的投票返回最有帮助的评论.但是,在根本没有评论的情况下,我希望代码为 return null。但我的问题是下面的代码给了我一个 "no such element exception",我该如何解决?

 public Comment findMostHelpfulComment()
{
    Iterator<Comment> it = comments.iterator();
    Comment best = it.next();
    while(it.hasNext()) 
    {
        Comment current = it.next();
        if(current.getVoteCount() > best.getVoteCount()) {
            best = current;
        }

    }
    return best;
} 
Comment best = it.next();

如果注释为空,这将不会给您任何此类元素异常。 您需要检查空值,或者在 Comment best = it.next()

之前执行 it.hasNext()
public Comment findMostHelpfulComment() {
    Iterator < Comment > it = comments.iterator();
    Comment best = new Comment();
    while (it.hasNext()) {
        Comment current = it.next();
        if (current.getVoteCount() > best.getVoteCount()) {
            best = current;
        }
    }
    return best;
}

请尝试上面的代码。 与其在声明的时候使用it.next(),不如用一个空的Comment对象来声明。通过这样做,它将跳过从 Iterator 中获取数据而不进行检查。

这不会抛出 java.util.NoSuchElementException

public Comment findMostHelpfulComment()
{
    if (comments.isEmpty()== true){
        return null;
    }
    else{

    Iterator<Comment> it = comments.iterator();
    Comment best = it.next();
    while(it.hasNext()) 
    {
        Comment current = it.next();
        if(current.getVoteCount() > best.getVoteCount()) {
            best = current;
        }

    }
    return best;
}

}