Q:

Dúvida - HashMap & List

Minha necessidade era a seguinte: Um relatório que traria o Evento e o número de reservas de hotel que estava associada aquele Evento. E assim se seguiu como mostra o código abaixo:
    List<IHotelReservation> iHotelReservationList = Lists.newArrayList();

    iHotelReservationList.addAll(this.hotelReservationDao.listByReservationStatus(hotelReservationFilter));
    iHotelReservationList.addAll(this.omnibeesHotelReservationDao.listByReservationStatus(hotelReservationFilter));

    Map<Event, Integer> hotelReservationMap = Maps.newHashMap();

    for (IHotelReservation iHotelReservation : iHotelReservationList) {
        int hotelReservationQtd = 1;
        if (hotelReservationMap.containsKey(iHotelReservation.getEvent())) {
            hotelReservationQtd = hotelReservationMap.get(iHotelReservation.getEvent())+1;
        }
        hotelReservationMap.put(iHotelReservation.getEvent(), hotelReservationQtd);
    }
    this.result.include("hotelReservationMap", hotelReservationMap);
}

Ainda preciso que se retorne um Map usando Event como key. Porém agora com o número de Allocations dado aquele Event, não mais de HotelReservations. Vale ressaltar que possuo um List getAllocationList() em IHotelReservation.

A:

Algumas pequenas alterações no código são suficientes para alterar o que código faz para que ele passe a dizer quantos Allocations estão associadas a cada Event ao invés de dizer quantos IHotelReservation estão associados a cada Event.  
Há comentários nas coisas importantes do código para explicá-las.
List<IHotelReservation> iHotelReservationList = Lists.newArrayList();

iHotelReservationList.addAll(this.hotelReservationDao.listByReservationStatus(hotelReservationFilter));
iHotelReservationList.addAll(this.omnibeesHotelReservationDao.listByReservationStatus(hotelReservationFilter));

//A variável segue um padrão meu de nomenclatura para maps, que é "nomeDobjetoDaKey_NomeDoObjetoDoValue", ou seja, na key temos um "evento" e para este evento temos no Value o "TotalDeAllocationsAssociadosAoEvento"
Map<Event, Integer> evento_TotalDeAllocationsAssociadosAoEvento = Maps.newHashMap();

for (IHotelReservation iHotelReservation : iHotelReservationList) {
    //Na linha abaixo colocamos em "allocationsQtd" o total de Allocations do iHotelReservation da iteração atual do loop
    int allocationsQtd = iHotelReservation.getAllocationList().size(); //tenha certeza de que "getAllocationList()" não retornará null, caso contrário, vc terá que tratar isso
    if (evento_TotalDeAllocationsAssociadosAoEvento.containsKey(iHotelReservation.getEvent())) {
        //Entramos no if se já colocamos o Event no map, e nesse caso, vamos incrementar allocationsQtd com a quantidade de Allocations que já estava no map
        allocationsQtd += evento_TotalDeAllocationsAssociadosAoEvento.get(iHotelReservation.getEvent());
    }
    //Na linha abaixo iserimos o Event pela primeira vez no map, ou, atualizamos o valor dele no map
    evento_TotalDeAllocationsAssociadosAoEvento.put(iHotelReservation.getEvent(), allocationsQtd);
}
this.result.include("evento_TotalDeAllocationsAssociadosAoEvento", evento_TotalDeAllocationsAssociadosAoEvento);

