【问题标题】:returns an ArrayList using a while loop and an iterator使用 while 循环和迭代器返回 ArrayList
【发布时间】:2015-01-25 11:12:10
【问题描述】:

我对下面的方法有很大的问题。

public class PoliceDepartment{
    private ArrayList<PoliceOfficer> policeOfficers;


    public PoliceDepartment()
    {
        policeOfficers = new ArrayList<PoliceOfficer>();
    }

    public void addPoliceOfficers(PoliceOfficer newPoliceOfficers)
    {
    if(newPoliceOfficers != null)
    {
        policeOfficers.add(newPoliceOfficers);
    }
    }

接受警员姓名作为参数的方法,验证传递的参数不为空,搜索集合并返回该警员开出的停车罚单的 ArrayList,如果没有由警员开出的停车罚单,则返回 null指明人员。官员姓名不区分大小写。此方法使用 while 循环和迭代器来实现所需的功能。

public ArrayList<ParkingTicket> getAllTicketByOfficer(String officerName) {
    ArrayList<PoliceOfficer> al = new ArrayList<PoliceOfficer>();
    Iterator<PoliceOfficer> it = policeOfficers.iterator();
    while(it.hasNext()){
        PoliceOfficer officer = it.next();
        if(officerName != null && officerName.equalsIgnoreCase(officer.getOfficerName())){  
            al.add(officer);
        }
        else {
            return null; 
        }
    }
    return al;
 }

我的线路有问题:

 return al;

发现的错误是“不兼容的类型”)

我不明白该怎么做。有人可以帮我吗?

【问题讨论】:

  • 您正在迭代 empty ArrayList。你预计会发生什么?
  • 发布将对象放入 ArrayList 的代码。
  • 更糟糕的是,您正在遍历要修改的列表。
  • 您正在尝试迭代parkingTickets;在方法开始时创建的 List。它是空的。你可以尝试迭代policeOfficers
  • 您在可以添加对象的地方添加了代码,但正如其他人指出的那样,这不是您要迭代的 ArrayList。

标签: java arraylist iterator


【解决方案1】:

您正在将警察添加到 ParkingTickets 列表中。类型不兼容。

【讨论】:

  • PoliceOfficer 没有出现在相关方法中的任何位置。
  • 用户在底部谈论方法,但现在已经编辑了问题,所以我的回答不再相关。