Java 泛型如何用于嵌套列表

Java 泛型如何用于嵌套列表,java,Java,我有一个会议中心类,每个会议中心包含1..n个会议室,每个房间有0..n个预订 我想遍历会议中心,因为每个人都创建一个包含所有保留的子列表,然后将该子列表添加到包含所有会议中心所有保留的列表中 public List<ArrayList<Reservation>> findAllReservations() { List<ArrayList<Reservation>> allReservations = new ArrayList<&

我有一个会议中心类,每个会议中心包含1..n个会议室,每个房间有0..n个预订

我想遍历会议中心,因为每个人都创建一个包含所有保留的子列表,然后将该子列表添加到包含所有会议中心所有保留的列表中

public List<ArrayList<Reservation>> findAllReservations() {
    List<ArrayList<Reservation>> allReservations = new ArrayList<>();

    for (MeetingCentre mc : this.getMeetingCentres()) {
        ArrayList<Reservation> currentMCReservations = new ArrayList<>();
        for (MeetingRoom mr : mc.getMeetingRooms()){
            if (mr.getReservations().size() > 0){
                currentMCReservations.addAll(mr.getReservations());
            }
        }
        if (currentMCReservations.size() > 0) {
            allReservations.add(currentMCReservations);
        }
    }
    return allReservations;
}
公共列表findAllReservations(){
List allReservations=new ArrayList();
for(MeetingCentre mc:this.getMeetingCentres()){
ArrayList currentMCReservations=新的ArrayList();
对于(会议室先生:mc.getMeetingRooms()){
如果(mr.getReservations().size()>0){
currentMCReservations.addAll(getReservations先生());
}
}
如果(currentMCReservations.size()>0){
添加(当前MCReservations);
}
}
返回所有预订;
}

我想将这些数据导出到JSON中,当我尝试使用allReservations列表时,会出现一个异常“Object cannot converted to Reservation”

最好的简单解决方案是使用


您需要阵列列表吗

public String getAllReservationsJSON() {
    List<Reservation> allReservations = new ArrayList<>();

    for (MeetingCentre mc : this.getMeetingCentres()) {
        ArrayList<Reservation> currentMCReservations = new ArrayList<>();
        for (MeetingRoom mr : mc.getMeetingRooms()){
            if (mr.getReservations().size() > 0){
                currentMCReservations.addAll(mr.getReservations());
            }
        }
        if (currentMCReservations.size() > 0) {
            allReservations.addAll(currentMCReservations);
        }
    }

    Gson gson = new Gson();

    return gson.toJson(allReservations);
} 
公共字符串getAllReservationsJSON(){
List allReservations=new ArrayList();
for(MeetingCentre mc:this.getMeetingCentres()){
ArrayList currentMCReservations=新的ArrayList();
对于(会议室先生:mc.getMeetingRooms()){
如果(mr.getReservations().size()>0){
currentMCReservations.addAll(getReservations先生());
}
}
如果(currentMCReservations.size()>0){
allReservations.addAll(当前MCReservations);
}
}
Gson Gson=新的Gson();
返回gson.toJson(所有预订);
} 

反序列化时,必须指定反序列化程序正在检索的对象类型。我不确定您现在正在使用什么,但我认为它可能只是默认为键、值对a.k.a.映射。您正试图将其转换为预订,这当然是无法做到的。我想我们这里缺少了一些完整回答这个问题的代码。您使用哪个库导出到Json?我猜您需要查找类型擦除:
public String getAllReservationsJSON() {
    List<Reservation> allReservations = new ArrayList<>();

    for (MeetingCentre mc : this.getMeetingCentres()) {
        ArrayList<Reservation> currentMCReservations = new ArrayList<>();
        for (MeetingRoom mr : mc.getMeetingRooms()){
            if (mr.getReservations().size() > 0){
                currentMCReservations.addAll(mr.getReservations());
            }
        }
        if (currentMCReservations.size() > 0) {
            allReservations.addAll(currentMCReservations);
        }
    }

    Gson gson = new Gson();

    return gson.toJson(allReservations);
}