我有一个字段" name" (字符串),其值为" FOO1000"," FOO1100"," FOO150"等等,并使用realm-io for Java(Android,0.89.1)来获取它们。
当我使用.findAllSorted(" name",Sort.ASCENDING)时,它们不会自然排序。输出将是
FOO1000
FOO1100
FOO150
我想要实现的是像
这样的自然排序FOO150
FOO1000
FOO1100
有没有办法进行自然分类?
答案 0 :(得分:0)
Realm使用标准排序算法。它会一次对一个字符进行排序,并且由于5大于1,它最后会出现。您不能期望将字符串的某些部分解释为数字。 如果您有150,1000,1100作为数字并排序,您将获得您期望的排序顺序。如果你需要一个字符串和一个数字,你应该有FOO0150而不是FOO150,它将按照你的预期排序。
答案 1 :(得分:0)
默认情况下,Realm没有自然排序。用前导零填充数字将模拟自然排序。
e.g。
Foo 100
Foo 2000
Foo 40
Foo 9
成为(根据需要添加更多零)
Foo 0000100
Foo 0002000
Foo 0000040
Foo 0000009
产生自然排序的输出
Foo 0000009
Foo 0000040
Foo 0000100
Foo 0002000
您可能希望创建一个分别存储填充值的新字段。