0

我正在使用 Java 8,我尝试使用“Collectors.groupingBy”,但没有获得所需的格式

public class ConsigneeLoadDetails {

    private Integer tripID;
    private String consignor;
    private String consignee;
    private String city;
    private Double distanceToNext;
    private Double load;
    private Integer cap;
    private Integer vehicleCapacity;
    private Double cLoad;
    private Integer truckUtilisation;
    private Double latitude;
    private Double longitude;  

    // getter , setter of all parameters 
}



List<ConsigneeLoadDetails> listConsigneeLoadDetails = new ArrayList();

// loop to add ConsigneeLoadDetails

listConsigneeLoadDetails.add(consigneeLoadDetails);

我在 API 响应中低于 Json

在此处输入图像描述

我想要以下格式的回复

在此处输入图像描述

4

2 回答 2

1

你为什么不把你的 POJO 类重新排列成这样

public class ConsigneeLoadDetails {

    private Integer tripID;
    private String consignor;
    private Integer vehicleCapacity;
    private Double cLoad;
    private Integer truckUtilisation;
    private List<consigneeDetails> consigneeDetails    
    private Double latitude;
    private Double longitude;  

    // getter , setter of all parameters 
}

public class ConsigneeDetails {

    private String consignee;
    private String city;
    private Double distanceToNext;
    private Double load;
    private Integer cap;

    // getter , setter of all parameters 
}
于 2019-09-20T07:08:16.513 回答
0
Map<Integer, List<ConsigneeLoadDetails>> collect =

// group the object by id   
listConsigneeLoadDetails.stream().collect(Collectors.groupingBy(consigneeLoadDetails -> consigneeLoadDetails.tripID));

        List<ConsigneeLoadDetailsDto> dtoList = new ArrayList<>();

        collect.forEach((integer, consigneeLoadDetails) -> {
            List<ConsigneeLoadDetails> list = consigneeLoadDetails;

            if (Optional.ofNullable(list).isPresent() && !list.isEmpty()) {
                ConsigneeLoadDetailsDto dtos = new ConsigneeLoadDetailsDto();
                dtos.setTripID(integer);
                dtos.setConsignor(list.stream().findFirst().get().getConsignor());
                dtos.setVehicleCapacity(list.stream().findFirst().get().getVehicleCapacity());
                dtos.setCLoad(list.stream().findFirst().get().getCLoad());
                dtos.setTruckUtilisation(list.stream().findFirst().get().getTruckUtilisation());
                List<ConsigneeDetails> consigneeDetails = new ArrayList<>();
                list.forEach(next -> {
                    ConsigneeDetails con = new ConsigneeDetails();
                    con.setCap(next.getCap());
                    con.setCity(next.getCity());
                    con.setConsignee(next.getConsignee());
                    con.setDistanceToNext(next.getDistanceToNext());
                    con.setLoad(next.getLoad());
                    consigneeDetails.add(con);
                });
                dtos.setConsigneeDetails(consigneeDetails);
                dtoList.add(dtos);
            }
        });

// Your result will be store in 
// dtoList

    }
}


@Getter
@Setter
@ToString
class ConsigneeLoadDetailsDto {

    private Integer tripID;
    private String consignor;
    private Integer vehicleCapacity;
    private Double cLoad;
    private Integer truckUtilisation;
    private List<ConsigneeDetails> consigneeDetails;
}

@Getter
@Setter
@ToString
class ConsigneeDetails {


    private String consignee;
    private String city;
    private Double distanceToNext;
    private Double load;
    private Integer cap;

}
于 2019-09-20T09:00:42.320 回答