私はList of LinkedHashMap
からキーを抽出するプログラムを書いています。抽出されたキーはカンマで連結され、CSVファイルの列見出しとして印刷されます。 flatJson
の指定した順序でLinkedHashMapからKeySetを取得する
サンプルコンテンツは次のようになります。
{
Submitted_Date=03-11-2016 01:19:41,
Comments=,
Rating=3,
details.name=Willy,
details.personalId=S123456A,
details.mobileNo=11111111,
[email protected],
Channel=desktop,
Referral_Code=,
discount.promoCode=,
discount.referral=,
policyPlan.grossPremium=788.64,
policyPlan.name=Standard,
policyPlan.netPremium=788.64
}
コード:
private TreeSet<String> collectHeaders(List<LinkedHashMap<String, String>> flatJson) {
TreeSet<String> headers = new TreeSet<String>();
for (LinkedHashMap<String, String> linkedMap : flatJson) {
headers.addAll(linkedMap.keySet());
}
return headers;
}
私はこのプログラムから取得していますヘッダの順序は次のとおりです。
Channel
Comments
Rating
Referral_Code
Submitted_Date
details.email
details.personalId
details.mobileNo
details.name
discount.promoCode
discount.referral
policyPlan.grossPremium
policyPlan.name
policyPlan.netPremium
ながら期待される出力はflatJson
と同じです:
Submitted_Date
Comments
Rating
details.name
details.personalId
details.mobileNo
details.email
Channel
Referral_code
discount.promoCode
discount.referral
policyPlan.grossPremium
policyPlan.name
policyPlan.netPremium
以前、私は順序をサポートしていませんHashMap
とSet
を使用していました。私は以来それらをLinkedHashMap
とTreeSet
に変更しましたが、それでも正しい順序を得ることはできません。
TreeSetではなくLinkedHashSetを使用します –