0

Super-CSV-Dozer API を使用して CSV の正規化を行いたいと考えています。

次の形式の CSV ファイルがあります。

ObjectA_ID,ObjectA_Name,ObjectB_ID,ObjectB_Name
1,A_Name1,10,B_Name1
1,A_Name1,11,B_Name2
1,A_Name1,12,B_Name3
...
2,A_Name2,20,B_Name11
2,A_Name2,21,B_Name12
2,A_Name2,22,B_Name13
...

そして、このファイルを (たとえば を介してCsvDozerBeanReader) 読み取った後、このデータの正規化された表現を次のような Bean の形式で取得したいと考えています。

Class ObjectA {
    private long id;
    private String name;
    private Collection objectBs;
    ...
}

Class ObjectB {
    private long id;
    private String name;
    ...
}

Super-CSV-Dozer に組み込みの可能性はありますか?

4

1 に答える 1

1

各行が異なるものを表している場合は、この回答ObjectAをお勧めします(最初、あなたの質問はこれに似ていると思いまし)。

しかし、あなたのコメントを読んだ後、それは役に立ちません。列は、それに属するすべてのObjectA列に対して繰り返されます。ObjectB

Super CSV ではこれらを組み合わせることができないため、それぞれObjectAをマップに保存する必要があります。

  • Beanとして読み取られる行ごとにObjectA(CsvDozerBeanMapper を使用)

    • ObjectAID のマップに があるかどうかを確認します

      • はいの場合は、現在の値を追加して更新しObjectBます

      • いいえの場合は、マップに追加してください

  • Map の値 (正規化されたObjectA) を返します。

正規化する必要があることの欠点は、すべてObjectAをメモリに保存する必要があることです。

于 2013-06-08T02:14:04.373 に答える