Firestore Document 不维护 LinkedHashMap 中键的顺序



我随身携带了一个对列表,我将其插入到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。请注意,当字符串排序时,排序lexicographically

让我们举一个简单的例子。对于数字,这是正常顺序:

  • 1308
  • 1309
  • 1310
  • 1311

但对于字符串,这是正常顺序:

  • "1308">
  • "1309">
  • "131">
  • "1310">

据我所知,Cloud Firestore 中没有允许您更改此行为的运算符,大多数其他数据库中也没有运算符。相反,您必须修改数据才能获得所需的行为。因此,请按字典顺序排序时按所需顺序存储值。对于数字,您可以通过用零填充它们来实现:

  • "0131"//前面添加了零
  • "0132"//之前添加了零
  • ......
  • "1308">
  • "1309">
  • "1310">
  • "1311">

最新更新