ArrayList にデータの行があります。List からデータを読み取り、それを別の形式に変換して、フラット ファイルに書き込む必要があります。
List Data:
General Details|S|!|!|66T4051|N|MACH|a
Charge Details|S|!|!|66T4051| 3827|N|
Charge Details|S|!|!|66T4051| 3828|N|
Insurance Details|S|!|!|66T4051| f|
Insurance Details|S|!|!|66T4051| h|
Insurance Details|S|!|!|66T4051| p|
ここで、GeneralDetails カウントは 1 で、これがマスター データです。Charge Details の数は 2 です。Insurance Details の数は 3 です。
上記のリスト データを以下の形式の 1 つの文字列に変換する必要があります。
ROW1|General Details|S|!|!|66T4051|N|MACH|a|2|Charge Details|S|!|!|66T4051| 3827|N|Charge Details|S|!|!|66T4051| 3828|N|3|Insurance Details|S|!|!|66T4051| f|Insurance Details|S|!|!|66T4051| h|Insurance Details|S|!|!|66T4051| p$
各レコードの前にカウントを配置する必要があります。まあ言ってみれば。
ROW1 - 1 is the count of General Details
|2|Charge Details - 2 is the count of Charge Details
|3|Insurance Details - 3 is the count of Insurance Details
これを達成する方法を提案してください。
各行のカウントを取得しました。
map>{Charge Details=2, General Details=1,Insurance Details=3}
しかし、その後に進むことができません。
public void processRows(LinkedList<LinkedList<Object>> linkedList,String intfCode,String bankId)
{
for(int i=0;i<linkedList.size();i++)
{
List<Object> list = linkedList.get(i);
//System.out.println("list>>"+i+""+list);
List<Object> tableNameList = new ArrayList<Object>();
LinkedHashMap map = new LinkedHashMap();
for(int j=0;j<list.size();j++)
{
String rowOfLine = (String)list.get(j);
String split[] = (rowOfLine.split("\\|"));
String tableName=split[0];
tableNameList.add(tableName);
}
for(int j=0;j<list.size();j++)
{
String rowOfLine = (String)list.get(j);
String split[] = (rowOfLine.split("\\|"));
String tableName=split[0];
int count = Collections.frequency(tableNameList, tableName);
System.out.println("count>>"+count);
if(!(map.containsKey(tableName)) && tableName!=null)
{
map.put(tableName, count);
}
//transformRow(tableName,intfCode,bankId,rowOfLine,collateralType);
}
System.out.println("map>"+map);
}
}