Java 按指定顺序从LinkedHashMap检索密钥集
我正在编写一个程序,从LinkedHashMap的Java 按指定顺序从LinkedHashMap检索密钥集,java,linkedhashmap,treeset,Java,Linkedhashmap,Treeset,我正在编写一个程序,从LinkedHashMap的列表中提取密钥。然后,提取的键将与逗号连接,并在CSV文件中打印为列标题 flatJson的示例内容如下所示: { Submitted_Date=03-11-2016 01:19:41, Comments=, Rating=3, details.name=Willy, details.personalId=S123456A, details.mobileNo=11111111, details.email=w
列表中提取密钥。然后,提取的键将与逗号连接,并在CSV文件中打印为列标题
flatJson
的示例内容如下所示:
{
Submitted_Date=03-11-2016 01:19:41,
Comments=,
Rating=3,
details.name=Willy,
details.personalId=S123456A,
details.mobileNo=11111111,
details.email=willy@email.com,
Channel=desktop,
Referral_Code=,
discount.promoCode=,
discount.referral=,
policyPlan.grossPremium=788.64,
policyPlan.name=Standard,
policyPlan.netPremium=788.64
}
代码:
虽然预期输出与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不是为了保留插入顺序。它是关于对其元素进行排序的
换句话说:如果您将String对象添加到树集合中,它们将被排序,就像您将对该列表进行排序一样
因此,如果顺序是您最关心的问题,那么您应该使用而不是树集!或者,您可以在创建树集时提供一个自定义。。。这不知何故给了你想要的顺序——这可能会奏效,但对我来说,这听起来像是黑客的变通方法。使用LinkedHashSet而不是树将其切换到LinkedHasSet立即解决了问题。非常感谢你!
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
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