对于HW,我需要: - 将几个CSV文件读入Hashmaps(已经完成) - 将这些Hashmaps的特定密钥写入main方法中的新CSV文件中。
最终的csv文件包含键“customerno”,“lastname”,“firstname”,“invoiceno”,“totalamount”。
前三个键(customerno,lastname,firstname)位于名为“customers”的Hashmap中。
密钥“invoiceno”位于名为“invoiceitem”的Hashmap中。
键“totalamount”是键“productno”和“key”的产物。 “quantity”和来自csv文件的匹配“price”键称为“product”(这也需要与“invoiceno”匹配。
输出csv文件也需要排序。
我目前的主要方法如下:
public class Main{
public static void main(String[] args)
{
InvoiceSystem invoiceSystem = new InvoiceSystem();
invoiceSystem.readCustomers();
invoiceSystem.readInvoices();
invoiceSystem.readProductGroups();
invoiceSystem.readProducts();
invoiceSystem.readInvoiceItems();
System.out.printf("Customers : %5d ( == %5d)\n", invoiceSystem.getCustomers().size(), 210);
System.out.printf("Invoices : %5d ( == %5d)\n", invoiceSystem.getInvoices().size(), 300);
System.out.printf("ProductGroups : %5d ( == %5d)\n", invoiceSystem.getProductGroups().size(), 5);
System.out.printf("Products : %5d ( == %5d)\n", invoiceSystem.getProducts().size(), 27);
System.out.printf("InvoiceItems : %5d ( == %5d)\n", invoiceSystem.getInvoiceItems().size(), 2019);
String headline = "customerno"+";"+"lastname"+";"+"firstname"+";"+"invoiceno"+";"+"totalamount";
Map<Integer,Customer> outputCus = new HashMap<>(invoiceSystem.getCustomers());
try {
File file = new File("c:\\output.csv");
if (!file.exists()) {
file.createNewFile();
}
FileWriter fw = new FileWriter(file.getAbsoluteFile());
BufferedWriter bw = new BufferedWriter(fw);
bw.append(headline);
bw.newLine();
for(Map.Entry<Integer,Customer> abc : outputCus.entrySet()){
bw.write(abc.getKey().toString());
bw.write(";");
bw.write(abc.getValue().toString());
bw.write("\r\n");
}
bw.close();
} catch (IOException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
这是我得到的当前.csv输出 - &gt; current csv
关于如何前进的任何建议?我现在正在墙上跑。谢谢!