有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Firestore按降序排序

在我的Firestore数据库中,我有字段索引no,数据类型是string,但数据是数字,如1、2、3等等

collectionReference
     .orderBy("indexNo", Query.Direction.DESCENDING)

在9之前输出正常,9之后,即对于10、11、12,数据显示为1、10、11、12、2、3等

请指导我解决这个问题,因为这些数字将决定cardview项目在recycler view中的排列

谢谢


共 (3) 个答案

  1. # 1 楼答案

    最好将数据类型从字符串更改为整数。我做到了。 谢谢你的支持

  2. # 2 楼答案

    由于数据类型是string,因此排序是字典式的。把数字想象成字母表。0=A,1=B,2=C。。。当比较9和10时,把它想象成比较单词“I”和“BA”。在字典里,你希望哪个先出现

  3. # 3 楼答案

    如果indexNo属性的数据类型是String类型,并且如果希望使用Query.Direction.DESCENDING对结果进行排序,则结果将不是预期的结果,因为在对字符串进行排序时,结果是按字典顺序排列的。有两种方法可以解决这个问题。第一种方法是将属性的数据类型从字符串改为数字,我个人建议这样做

    这是数字的正常顺序:

    • 1308
    • 1309
    • 1310
    • 1311

    这是字符串的正常顺序:

    • “1308”
    • “1309”
    • “131”
    • “1310”

    第二种方法是修改数据以获得所需的行为。对于数字,可以通过用零填充来实现,如下例所示:

    • 之前添加了“0131”//0
    • 之前添加了“0132”//0
    • “1308”
    • “1309”
    • “1310”
    • “1311”