배열의 값 합계를 & 그룹화하려고합니다. 아래 표시된 데이터에서 추가 비용 열 아래의 값은 날짜 - 노트 조합 &에 대해 다른 목록에 저장해야 합니다.자바 - 람다를 사용한 그룹화 및 합계
나는 Link1Link2 & Link3을 언급했지만 내가하고있는 실수를 알 수 없습니다. 내게 직면 한 문제가 분명하고, 지침을 기다리고 있기를 바랍니다.
데이터 (엑셀에서 읽기) :
- 날짜 | 참고 번호 | 할증료
- 29 년 1 월 29 일 | 1234 | 12.2
- 29 년 1 월 29 일 | 1234 | 10.5
- 28-1 월 20 일 | 2468 | 9.25
- 28-1 월 20 일 | 2468 | 14.4
- 28-1 월 | 2468 | 13.3
- 27-1 월 -2016 | 1357 | 17.2
- 27-1 월 2016 | 1357 | 18.7
코드 데이터 모델 :
public class ModelSurcharge {
private LocalDate cNoteDate;
private int cNote;
private double surcharge;
public ModelBrokerage(LocalDate cNoteDate, int cNote, double surcharge) {
this.cNoteDate = cNoteDate;
this.cNote = cNote;
this.surcharge= surcharge;
}
public LocalDate getcNoteDate() {
return cNoteDate;
}
public int getcNote() {
return cNote;
}
public double getSurcharge() {
return surcharge;
}
}
코드 Main 클래스 :
File fileCNote = null;
try {
fileCNote = new File("c:/surcharge.xlsx");
} catch (IOException e) {
e.printStackTrace();
}
// Read data from excel file
List<List<XSSFCell>> dataSurcharge = iFaceXLSX.readData(fileCNote);
// Skip header line & filter out rows which do not have surcharge amount
dataSurcharge = dataSurcharge .stream().skip(1).filter(p -> p.get(6).getNumericCellValue() > 0).collect(Collectors.toList());
// Transfer data read from excel to the data model
List<ModelSurcharge> surcharges= new ArrayList<>();
dataSurcharge.forEach(e -> {
List<ModelSurcharge> temp = Arrays.asList(new ModelSurcharge(
e.get(0).getDateCellValue().toInstant().atZone(ZoneId.systemDefault()).toLocalDate(),
(int) e.get(1).getNumericCellValue(),
(e.get(3).getNumericCellValue() + e.get(4).getNumericCellValue()) * e.get(6).getNumericCellValue()));
surcharges.addAll(temp);
});
//Output to console
surcharges.stream().collect(groupingBy(Function.identity(),
()->new TreeMap<>(
Comparator.<ModelSurcharge,LocalDate>comparing(p->p.getcNoteDate()).thenComparing(p->p.getcNote())),
Collectors.summingDouble(foo->foo.getSurcharge())))
.forEach((group,surcharge) ->
System.out.println(group.getcNoteDate()+"\t"+group.getcNote()+"\t"+surcharge));
// Collecting to another list does not work
List<ModelSurcharge> output = surcharges.stream()
.collect(groupingBy(p -> p.getcNoteDate(), Collectors.summingDouble(p -> p.getSurcharge())));
오류 : 그것은이 있기 때문에
가Cannot resolve method 'getcNoteDate()'
Cannot resolve method 'getSurcharge()'
모든 링크와 관련성이없는 코드를 제거하고 관련 코드 만 제공하여 질문을 단순화하고 명확하게 해주십시오 : ModelSurcharge 클래스, 컴파일되지 않는 코드를 보여주는 완전하지만 최소한의 예제, 완전한 컴파일러 오류 메시지? –
@JBNizet 본인은 귀하가 통지 한대로 변경했습니다. 필요한 정보를 제공하고 내가 직면 한 문제가 더 분명 할 수 있기를 바랍니다. 죄송합니다 & 포럼 – iCoder