JAVA从条件中返回ArrayList对象

Cir*_*zer 2 java iterator arraylist

我有一个实现另一个超类的接口测试类.在测试类中,我有一个方法,它应该从数组列表返回一个对象; 首先它应该检查列表中的对象以查看它是否存在,如果不存在,它将返回null,否则它将返回找到的对象.这是我实现的代码:

public class ProductDBImpl implements ProductDB {

// field declarations
ArrayList<Product> products = new ArrayList<Product>();



@Override
public Product getProduct(int productId)
{
    // TODO Auto-generated method stub
    // create an iterator for the Arraylist
    Iterator<Product> pritr = products.iterator();
    while(pritr.hasNext())
    {
        Product pr = pritr.next();
        if (pritr.next().getId() == productId)
        {
            return pr;
        }
        else
        {

            return null;
        }
    }

}
Run Code Online (Sandbox Code Playgroud)

不幸的是我收到的错误是:此方法必须返回Product类型的结果.

我的印象是,通过使用迭代器并循环遍历列表中的每个元素,每个元素都是一个类型Product.请帮我识别我的错误.

rge*_*man 5

你的return陈述正在返回,Product或者null都是合法的getProduct.但是,如果没有s ,马上就会pritr.hasNext()回来怎么办?如果循环退出则没有声明.falseProductreturnwhile

循环return后添加一个语句while.

另外,因为你总是在while循环的第一次迭代中返回一些东西,所以它不必是一个循环.您可以将其更改为if不更改任何其他内容.

但这真的是你想要的吗?null如果找到的第一个产品不匹配则返回没有意义.您可能需要考虑删除该else块,以继续搜索列表(而不是更改whileif).