直接上代码 实体类
@Data
@AllArgsConstructor
@NoArgsConstructor
public class SinglePressureResultDTO {
private Integer Times;
private Integer SCU_number;
private Boolean Intervention;
private Long startTime_low;
private Long low_time;
private Long startTime_rise;
private Long endTime_rise;
private Long rise_time;
private Long total_time;
private Long endTime_resistance;
private Long resistance_time;
private Long time_resistance_turningup;
private Float pressure_resistance_turningup;
private Float end_resistance;
private Float initial_support;
private Float moving_pressure;
}
测试
public static void main(String[] args) {
//给集合赋值 元素为SinglePressureResultDTO对象
List<SinglePressureResultDTO> singlePressure=new ArrayList<>();
singlePressure.add(new SinglePressureResultDTO
(1,2,true,1l,1l,1l,1l,1l,1l,1l,1l,1l,1f,1f,1f,1f));
singlePressure.add(new SinglePressureResultDTO
(1,3,true,1l,1l,1l,1l,1l,1l,1l,1l,1l,1f,1f,1f,1f));
singlePressure.add(new SinglePressureResultDTO
(1,4,true,2l,1l,1l,1l,1l,1l,1l,1l,1l,1f,1f,1f,1f));
singlePressure.add(new SinglePressureResultDTO
(1,4,false,3l,1l,1l,1l,1l,1l,1l,1l,1l,1f,1f,1f,1f));
System.out.println(adapterToASQTotalDTO(singlePressure)+" )))");
public static ASQTotalDTO adapterToASQTotalDTO(List<SinglePressureResultDTO> singlePressure) {
ASQTotalDTO asqTotalDTO = new ASQTotalDTO();
List<ASQSingleDTO> asqs = new ArrayList<>();
if (CollectionUtil.isEmpty(singlePressure)) {
return asqTotalDTO;
}
//将传递过来的集合以SCU_number属性进行分组 类似于key-value的形式
//key是SCU_number,value是SCU_number符合条件的所有对象(集合)
//{2=[SinglePressureResultDTO(Times=1, SCU_number=2, Intervention=true, startTime_low=1, low_time=1, startTime_rise=1, endTime_rise=1, rise_time=1, total_time=1, endTime_resistance=1, resistance_time=1, time_resistance_turningup=1, pressure_resistance_turningup=1.0, end_resistance=1.0, initial_support=1.0, moving_pressure=1.0)],
// 3=[SinglePressureResultDTO(Times=1, SCU_number=3, Intervention=true, startTime_low=1, low_time=1, startTime_rise=1, endTime_rise=1, rise_time=1, total_time=1, endTime_resistance=1, resistance_time=1, time_resistance_turningup=1, pressure_resistance_turningup=1.0, end_resistance=1.0, initial_support=1.0, moving_pressure=1.0)],
// 4=[SinglePressureResultDTO(Times=1, SCU_number=4, Intervention=true, startTime_low=2, low_time=1, startTime_rise=1, endTime_rise=1, rise_time=1, total_time=1, endTime_resistance=1, resistance_time=1, time_resistance_turningup=1, pressure_resistance_turningup=1.0, end_resistance=1.0, initial_support=1.0, moving_pressure=1.0), SinglePressureResultDTO(Times=1, SCU_number=4, Intervention=false, startTime_low=3, low_time=1, startTime_rise=1, endTime_rise=1, rise_time=1, total_time=1, endTime_resistance=1, resistance_time=1, time_resistance_turningup=1, pressure_resistance_turningup=1.0, end_resistance=1.0, initial_support=1.0, moving_pressure=1.0)]}
Map<Integer, List<SinglePressureResultDTO>> scuResult = singlePressure.stream().collect(Collectors.groupingBy(SinglePressureResultDTO::getSCU_number));
System.out.println(scuResult+" scuResult");
//获取每一个集合中的元素 确切来说,获取每一个key-value
//并且遍历每一个key-value
for (Map.Entry<Integer, List<SinglePressureResultDTO>> entry : scuResult.entrySet()) {
//在这里可以打印每一个key-value
System.out.println(entry+" key-value");
ASQSingleDTO asqSingle = new ASQSingleDTO();
List<ASQCirculateDTO> auto = new ArrayList<>();
List<ASQCirculateDTO> manual = new ArrayList<>();
//遍历每一个key-value中的value(注意 value是集合)
for (SinglePressureResultDTO pressure : entry.getValue()) {
//同样可以获取到entry中的key以及entry中的value
System.out.println(entry.getKey()+" **&^&%^");
System.out.println(entry.getValue()+" *&^%");
ASQCirculateDTO dto = new ASQCirculateDTO();
dto.setDownStartTime(pressure.getStartTime_low());
dto.setDownEndTime(pressure.getStartTime_rise());
dto.setUpStartTime(pressure.getStartTime_rise());
dto.setUpEndTime(pressure.getEndTime_rise());
dto.setEndStrength(pressure.getEnd_resistance());
dto.setInflectionPressure(pressure.getPressure_resistance_turningup());
dto.setInitStrength(pressure.getInitial_support());
if (pressure.getIntervention()) {
manual.add(dto);
} else {
auto.add(dto);
}
}
asqSingle.setScuNo(entry.getKey());
System.out.println(entry.getKey()+" entry.getKey()");
asqSingle.setAsqNum(auto.size());
asqSingle.setNsqNum(manual.size());
asqSingle.setAuto(auto);
asqSingle.setManual(manual);
//每个支架数据作为asqs的一个元素
asqs.add(asqSingle);
}
asqTotalDTO.setAsqs(asqs);
System.out.println(asqTotalDTO);
List<ASQSingleDTO> asqs1 = asqTotalDTO.getAsqs();
//for (ASQSingleDTO asqSingleDTO:asqs1) {
//System.out.println(asqSingleDTO+" -----");
//}
System.out.println(asqs1+" asq1");
return asqTotalDTO;
}
}
运行 System.out.println(asqs1+" asq1");结果
[ASQSingleDTO{scuNo=2, asqNum=0, nsqNum=1, auto=[], manual=[ASQCirculateDTO{downStartTime=1, downEndTime=1, moveStartTime=null, moveEndTime=null, upStartTime=1, upEndTime=1, inflectionPressure=1.0, initStrength=1.0, endStrength=1.0}]},
ASQSingleDTO{scuNo=3, asqNum=0, nsqNum=1, auto=[], manual=[ASQCirculateDTO{downStartTime=1, downEndTime=1, moveStartTime=null, moveEndTime=null, upStartTime=1, upEndTime=1, inflectionPressure=1.0, initStrength=1.0, endStrength=1.0}]},
ASQSingleDTO{scuNo=4, asqNum=1, nsqNum=1, auto=[ASQCirculateDTO{downStartTime=3, downEndTime=1, moveStartTime=null, moveEndTime=null, upStartTime=1, upEndTime=1, inflectionPressure=1.0, initStrength=1.0, endStrength=1.0}], manual=[ASQCirculateDTO{downStartTime=2, downEndTime=1, moveStartTime=null, moveEndTime=null, upStartTime=1, upEndTime=1, inflectionPressure=1.0, initStrength=1.0, endStrength=1.0}]}] asq1
打印key-value运行结果
2=[SinglePressureResultDTO(Times=1, SCU_number=2, Intervention=true, startTime_low=1, low_time=1, startTime_rise=1, endTime_rise=1, rise_time=1, total_time=1, endTime_resistance=1, resistance_time=1, time_resistance_turningup=1, pressure_resistance_turningup=1.0, end_resistance=1.0, initial_support=1.0, moving_pressure=1.0)] key-value
3=[SinglePressureResultDTO(Times=1, SCU_number=3, Intervention=true, startTime_low=1, low_time=1, startTime_rise=1, endTime_rise=1, rise_time=1, total_time=1, endTime_resistance=1, resistance_time=1, time_resistance_turningup=1, pressure_resistance_turningup=1.0, end_resistance=1.0, initial_support=1.0, moving_pressure=1.0)] key-value
4=[SinglePressureResultDTO(Times=1, SCU_number=4, Intervention=true, startTime_low=2, low_time=1, startTime_rise=1, endTime_rise=1, rise_time=1, total_time=1, endTime_resistance=1, resistance_time=1, time_resistance_turningup=1, pressure_resistance_turningup=1.0, end_resistance=1.0, initial_support=1.0, moving_pressure=1.0), SinglePressureResultDTO(Times=1, SCU_number=4, Intervention=false, startTime_low=3, low_time=1, startTime_rise=1, endTime_rise=1, rise_time=1, total_time=1, endTime_resistance=1, resistance_time=1, time_resistance_turningup=1, pressure_resistance_turningup=1.0, end_resistance=1.0, initial_support=1.0, moving_pressure=1.0)] key-value