我有一个Pairs列表,我将其插入LinkedHashMap并将其上传到Firestore文档。但是,Firestore文档中的键顺序与LinkedHashMap的键顺序不匹配。
以下是代码:
Map<String, String> quesMap = new LinkedHashMap<>();
for(Pair<String, String> pair : quesAnsPairList){
Log.d(TAG, "adding key : " + pair.first);
quesMap.put(pair.first, pair.second);
}
for (Map.Entry<String, String> entry : quesMap.entrySet()) {
String key = entry.getKey();
String value = entry.getValue();
Log.d(TAG, key + " found");
}
//....
visitorsCollectionRef.document(visitor_id).set(quesMap);
答案 0 :(得分:1)
不幸的是,您无法更改该文档的顺序。我在订购时看到你正在使用Strings
。请注意,在订购字符串时,会对其进行排序lexicographically
。
我们举一个简单的例子。对于数字,这是正常的顺序:
但对于字符串,这是正常的顺序:
Cloud Firestore中没有运营商,据我所知,也没有大多数其他数据库允许您更改此行为。相反,您必须修改数据才能获得所需的行为。因此,按字典顺序排序时,按照您需要的顺序存储值。对于数字,您可以通过用零填充它们来实现这一点: