区切りファイルを「Holder」というカスタム オブジェクトに読み込んでいます。ホルダーには、「レコード」と呼ばれるカスタム オブジェクトのリストが含まれています。各レコードは、「フィールド」と呼ばれるカスタム オブジェクトのリストです。各フィールドには文字列名と文字列値があります
public class Holder{
private List RecordList;
/* constructors and methods */
}
public class Record{
private List FieldList
/* constructors and methods */
}
public class Field{
private String Name;
private String Value;
/* constructors and methods */
}
行の最初の項目に基づいて、データベースから Field オブジェクトの名前を取得しています。これは、私がプルしているファイルのサンプルです (行番号 - それらはレコード インデックスでもあります - 説明を簡単にするために 0 から始まります):
0 - A,123
1 - B,123,123456
2 - B,123,654321
3 - B,123,112233
4 - C,123,choice1,1/1/2011,12/31/2011
5 - C,123,choice2,1/1/2011,12/31/2011
6 - D,123,choice1,1/1/2011,12/31/2011,654321
7 - D,123,choice1,1/1/2011,12/31/2011,112233
ホルダーはRecord
オブジェクトのリストを保存します。各行は、Record
オブジェクトのリストを格納するオブジェクトになりField
ます。Value
コンマ間の各文字列は、オブジェクト上で独自のものになりField
ます。例: 最初の "B" レコード (1 行目) の場合、ARecord BLine1
オブジェクトは次のようになります。
BLine1.getFieldList.get(0).getName() = "LineType" //set from DAO not shown
BLine1.getFieldList.get(0).getValue() = "B"
BLine1.getFieldList.get(1).getName() = "Number" //set from DAO not shown
BLine1.getFieldList.get(1).getValue() = "123"
BLine1.getFieldList.get(2).getName() = "Selection" //set from DAO not shown
BLine1.getFieldList.get(2).getValue() = "123456"
このリストをすべてのフィールドでソートする必要があります。ただし、LineType によって、並べ替える項目の種類と数が変わります。LineType は追加/削除でき、フィールドは変更できます。だから私は本当にできるだけ一般的なものが必要です。
フィールドが行にある順序で並べられます。でソートされますので、FieldList.getValue(0), FieldList.getValue(1), .... FieldList.getValue(FieldList.size() - 1)
したがって、これは完了時の行番号の順序です。
0
3
1
2
4
5
7
6
この種の最善/最も効率的な方法は何ですか?
前もって感謝します!