将几个Hashmaps写入新的csv文件

时间:2016-05-18 16:16:44

标签: java csv hashmap

对于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

关于如何前进的任何建议?我现在正在墙上跑。谢谢!

0 个答案:

没有答案