无法在Java中返回ArrayList

无法在Java中返回ArrayList,java,arraylist,Java,Arraylist,编辑,所以我修改了我的方法如下: import java.util.ArrayList public ArrayList<ParkingTicket> getTicketArrayByLicenseNumber(String licensePlate){ ArrayList<ParkingTicket> tickets = new ArrayList(); for(ParkingTicket list: ticketList){

编辑,所以我修改了我的方法如下:

import java.util.ArrayList

public ArrayList<ParkingTicket> getTicketArrayByLicenseNumber(String licensePlate){
        ArrayList<ParkingTicket> tickets = new ArrayList();
        for(ParkingTicket list: ticketList){
            String ticket = list.getCarLicensePlateNumber();
            if(ticket != null && ticket.equalsIgnoreCase(licensePlate)){
                tickets.add(list);
            }
        }
        return tickets;
    }

我是不是遗漏了什么

根据我的任务,我需要创建一个方法,该方法获取一个汽车牌照(一个字符串),并返回发给汽车的任何停车罚单对象的数组

停车罚单是ArrayList的一部分

private ArrayList<ParkingTicket> ticketList;

public ParkingTicket getTicketArrayByLicenseNumber(String licensePlate){
        
        for(ParkingTicket list: ticketList){
            String ticket = list.getCarLicensePlateNumber();
            if(ticket != null && ticket.equalsIgnoreCase(licensePlate)){
                return list;
            }
        }
        return null;
    }
private ArrayList ticketList;
公共停车场许可证getTicketArrayByLicenseNumber(字符串许可证){
对于(停车场客户列表:票务列表){
String ticket=list.getCarLicensePlateNumber();
if(ticket!=null&&ticket.equalsIgnoreCase(licensePlate)){
退货清单;
}
}
返回null;
}

突然想到现在该怎么办,因为代码似乎没有返回我想要的东西…

您返回的是对象,而不是对象列表

如果您熟悉Java 8 streams,可以按如下方式解决此问题:

private List<ParkingTicket> ticketList;

private List<ParkingTicket> getTicketArrayByLicenseNumber(String licensePlate) {
    return ticketList.stream()
            .filter(parkingTicket -> isLicensePlateNumberMatching(licensePlate, parkingTicket.getCarLicensePlateNumber()))
            .collect(Collectors.toList());
}

private boolean isLicensePlateNumberMatching(String licensePlate, String carLicensePlateNumber) {
    return carLicensePlateNumber != null && carLicensePlateNumber.equalsIgnoreCase(licensePlate);
}
private-List-ticketList;
私有列表getTicketArrayByLicenseNumber(字符串许可证模板){
returnticketlist.stream()
.filter(parkingTicket->isLicensePlateNumberMatching(licensePlate,parkingTicket.getCarLicensePlateNumber())
.collect(Collectors.toList());
}
私有布尔isLicensePlateNumberMatching(字符串licensePlate、字符串carLicensePlateNumber){
返回carLicensePlateNumber!=null&&carLicensePlateNumber.equalsIgnoreCase(licensePlate);
}
对于不使用流的解决方案,您应继续:

private List<ParkingTicket> getTicketArrayByLicenseNumber(String licensePlate) {
    List<ParkingTicket> ticketsMatching = new ArrayList<>();
    for (ParkingTicket parkingTicket : ticketList) {
        if(isLicensePlateNumberMatching(licensePlate, parkingTicket.getCarLicensePlateNumber())){
            ticketsMatching.add(parkingTicket);
        }
    }
    return ticketsMatching;
}
private List getTicketArrayByLicenseNumber(String-licensePlate){
List ticketsMatching=new ArrayList();
对于(ParkingTicket ParkingTicket:ticketList){
if(IsLicensePlateNumber格式化(licensePlate,parkingTicket.getCarLicensePlateNumber()){
ticketsMatching.add(parkingTicket);
}
}
退票匹配;
}

您需要创建一个新列表(例如,
java.util.ArrayList
)并将每个匹配的许可证“复制”(添加)到此新列表中。您的任务似乎表明您需要返回一个数组(如方法名称和断言消息所示),但您返回的是一个
ArrayList
。您可以使用将
ArrayList
转换为
ParkingTicket[]
(您还必须相应地调整返回类型)。
private List<ParkingTicket> getTicketArrayByLicenseNumber(String licensePlate) {
    List<ParkingTicket> ticketsMatching = new ArrayList<>();
    for (ParkingTicket parkingTicket : ticketList) {
        if(isLicensePlateNumberMatching(licensePlate, parkingTicket.getCarLicensePlateNumber())){
            ticketsMatching.add(parkingTicket);
        }
    }
    return ticketsMatching;
}