在Java中,我有一个List<Document>
,其中Document是bson文档。此列表从mongoDB中填充。
文档类不过是LinkedHashMap<String, Object>
在我们的示例中,我们将json文档(来自Mongo)存储到此Document类中。
示例:文档是以下json的键值对表示。请注意,每个文档的json结构和嵌套级别都可能有所不同。
{
"assetType" : "EQUITY",
"cusip" : "g5asds6",
"symbol" : "BqrF",
"pricing" : {
"eodAskPrice" : 4.168816,
"eodBidPrice" : 4.164947,
"eodPriceCurrency" : "USD",
"eodPriceCurrencyDesc" : "US Dollar",
"prevEodAskPrice" : 4.079388,
"prevEodBidPrice" : 4.058687,
},
"reference" : {
"adrSponsored" : false,
"countryIncorp" : "LU",
"countryIncorpDesc" : "LUXEMBOURG",
"dtc" : {
"bookEntryDrsFlag" : false,
"bookEntryDrsFlagDesc" : "Ineligible",
"specialDepReasonType" : "REG",
"specialDepReasonTypeDesc" : "Regular"
},
"estimatedAnnualDividend" : 0.0,
"exchangeCode" : "%",
"exchangeCodeDesc" : "Other-OTC",
}
}
我的问题是,我该如何编写某种自定义比较器,以便根据用户指定的字段对列表进行排序?
请注意,我无法为这些字段创建吸气剂。
一个用户可以指定排序方式[“ symbol”,“ exchangeCode”],另一个用户可以指定[“ cusip”,reference.countryIncorp“,” countryIncorpDesc“]
还请注意,我无法在Mongo中进行这种排序。由于数据在内存中可用,因此我必须在内存中对此数据进行排序。
非常感谢您的帮助!