我有一个对列表,我将其插入 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);
最佳答案
不幸的是,您无法更改文档的顺序。我发现您在订购时使用了Strings
。请注意,当字符串排序时,是按字典顺序
排序的。
让我们举一个简单的例子。对于数字,这是正常顺序:
- 1308
- 1309
- 1310
- 1311
但对于字符串,这是正常顺序:
- “1308”
- “1309”
- “131”
- “1310”
据我所知,Cloud Firestore 中以及大多数其他数据库中都没有允许您更改此行为的操作符。相反,您必须修改数据才能获得您想要的行为。因此,按字典顺序排序时,请按照您需要的顺序存储值。对于数字,您可以通过用零填充来实现:
- "0131"//前面加零
- "0132"//前面加零
- ......
- “1308”
- “1309”
- “1310”
- “1311”
关于java - Firestore Document 不维护 LinkedHashMap 中键的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49411918/