我是初级Java开发人员,受Java工具的委托。
我有以下问题:
此工具接收2个带有特定字段的CSV文件。 然后,该工具会生成2个csv文件作为Output。第一和第二输出。 两个输出文件具有相同的字段,第一个输出基于某些条件,第二个输出基于其他条件。
这2个输出文件包含一些数据的对帐,文件的某些记录具有相同的ID。
示例:
record1 = ID10-name One,
record2 = ID10-Blue Two,
record3 = ID10-name Three
其中一个条件如下:
if (line.getName (). toLowerCase (). contains ("Blue" .toLowerCase ())
|| line.getName (). equalsIgnoreCase ("Orange")) {
return true;
实现此方法的方法是一个布尔值,并且工具的所有逻辑都基于此逻辑。该工具逐行滚动/处理。
Iterator <BaseElaboration> itElab = result.iterator ();
while (itElab.hasNext ()) {
BaseLine Processing = itElab.next ();
在SECOND OUTPUT文件中,我找到了一条以Blue开头的名称的行/记录。该工具正确地将其插入并插入到第二个输出文件中,从而导致所有具有名称(getName)的记录,用蓝色或橙色继续 我应该将所有行都具有相同的ID,即使其中只有一行带有蓝色的名称。 目前,该工具可以执行此操作:
第一文件输出
record1 = ID10-name
record3 = ID10-name Three
第二个文件输出
record2 = ID10-Blue Two
预期输出为
第一文件输出
没有任何原因导致ID组中的一个与蓝色同名
第二个文件输出
record1 = ID10-name
record2 = ID10-Blue Two
record3 = ID10-name Three
我认为是这样,但不起作用
if (line.getID() && line.getCollector().toLowerCase().contains("Blue".toLowerCase())
|| line.getName().equalsIgnoreCase("black")) {
return true;
如何在Java行中对具有相同ID的行进行分组,并在noutput上进行隐含处理
代码
输出
private void creaCSVOutput() throws IOException, CsvDataTypeMismatchException, CsvRequiredFieldEmptyException, ParseException {
Writer writerOutput = new FileWriter(pathOutput);
Writer writerEsclusi = new FileWriter(pathOutputEsclusi);
StatefulBeanToCsv<BaseElaborazione> beanToCsv = new StatefulBeanToCsvBuilder<BaseElaborazione>(writerOutput)
.withSeparator(';').withQuotechar('"').build();
StatefulBeanToCsv<BaseElaborazione> beanToCsvEsclusi = new StatefulBeanToCsvBuilder<BaseElaborazione>(writerEsclusi)
.withSeparator(';').withQuotechar('"').build();
beanToCsv.write(CsvHelper.genHeaderBeanBase());
beanToCsvEsclusi.write(CsvHelper.genHeaderBeanBase());
Iterator<BaseElaborazione> itElab = result.iterator();
while (itElab.hasNext()) {
BaseElaborazione riga = itElab.next();
some set if and condition ecc
esclusi.add(riga);
itElab.remove();
}
}
for (BaseElaborazione riga : result) {
if(riga.getNota() == null || riga.getNota().isEmpty()) {
riga.setNota(mapNota.get(cuvNota.get(riga.getCuv())));
}
beanToCsv.write(riga);
}
for (BaseElaborazione riga : esclusi) {
if(riga.getNota() == null || riga.getNota().isEmpty()) {
riga.setNota(mapNota.get(cuvNota.get(riga.getCuv())));
}
beanToCsvEsclusi.write(riga);
}
writerOutput.close();
writerEsclusi.close();
}
esclusi(2个输出)的方法
private boolean checkPerimetroJunk(BaseElaborazione riga) {
if (riga.getMercato().toLowerCase().contains("Energia Libero".toLowerCase())) {
if (riga.getStrategia().toLowerCase().startsWith("STRATEGIA FO".toLowerCase())
|| (riga.getStrategia().toLowerCase().contains("CREDITI CEDUTI".toLowerCase())
|| (riga.getAttivita().equalsIgnoreCase("Proposta di Recupero Stragiudiziale FO")
|| (riga.getAttivita().toLowerCase().contains("Cessione".toLowerCase())
|| (riga.getLegalenome().equalsIgnoreCase("Euroservice junk STR FO")
|| (riga.getLegalenome().equalsIgnoreCase("Euroservice_FO"))))))) {
onlyCUV=true;
}
else if(Collections.frequency(storedIds,riga.getCuv()) >= 1 ){
onlyCUV = true;
}
return onlyCUV;
}
else if (riga.getMercato().equals("MAGGIOR TUTELA")) {
if(riga.getCollector().toLowerCase().contains("Cessione".toLowerCase())
|| (riga.getCollector().equalsIgnoreCase("Euroservice_Fo"))
|| (riga.getAttivitaCrabb().toLowerCase().contains("*FO".toLowerCase())
|| (riga.getaNomeCluster().equalsIgnoreCase("Full Outsourcing")))) {
onlyCUV = true;
}
else if(Collections.frequency(storedIds,riga.getCuv()) >= 1 ){
onlyCUV = true;
}
return onlyCUV;
}
return false;
}
其中riga = lines cessione ecc是拥有黑人ecc的人 现在是MAGGIOR TUTELA正在工作的部分,但是没有在LIBERO的部分工作。我不知道为什么。