AOSP存储库中的SortCursor如何对它的值进行排序

尼巴​​留斯

我试图使用AOSP中SortCursor类,该类在如何将2个游标表示为1个已排序游标?但是,它似乎根本不对我给出的游标进行排序。排序如何进行?

示例代码:

String[] columnNames = {"name", "value"};

MatrixCursor matrixCursor1 = new MatrixCursor(columnNames);
matrixCursor1.addRow(new String[]{"cursor 1 value A", "9"});
matrixCursor1.addRow(new String[]{"cursor 1 value B", "2"});
matrixCursor1.addRow(new String[]{"cursor 1 value C", "1"});

MatrixCursor matrixCursor2 = new MatrixCursor(columnNames);
matrixCursor2.addRow(new String[]{"cursor 2 value A", "70"});
matrixCursor2.addRow(new String[]{"cursor 2 value B", "8"});
matrixCursor2.addRow(new String[]{"cursor 2 value C", "6"});

Cursor sortCursor = new SortCursor(new Cursor[]{matrixCursor1, matrixCursor2}, columnNames[1]);
while (sortCursor.moveToNext()) {
    String name = sortCursor.getString(sortCursor.getColumnIndexOrThrow(columnNames[0]));
    String value = sortCursor.getString(sortCursor.getColumnIndexOrThrow(columnNames[1]));;
    Log.v("SortCursor", "Name: " + name + ", Value: " + value);
}
sortCursor.close();

运行此代码时的输出:

V/SortCursor: Name: cursor 2 value A, Value: 70
V/SortCursor: Name: cursor 2 value B, Value: 8
V/SortCursor: Name: cursor 2 value C, Value: 6
V/SortCursor: Name: cursor 1 value A, Value: 9
V/SortCursor: Name: cursor 1 value B, Value: 2
V/SortCursor: Name: cursor 1 value C, Value: 1

如您所见,这些值是完全未排序的。我希望有1,2,6,8,9,9,70。

尼巴​​留斯

关于SortCursor,有两件重要的事情要知道。

1.它从游标中读取的值是字符串而不是数字,因此字符串“ 70”小于字符串“ 8”。

2.仅在寻找最小值时比较每个游标的下一个值。因此,在将每个单独的游标分配给SortCursor之前,必须对其进行排序。

因此,在给定的示例中,“ 70”小于“ 9”,因此首先执行,然后“ 8”小于“ 9”,其次执行,“ 6”小于“ 9”,然后进行。然后,仅保留第一个光标中的值。

如您所见,所使用的游标实际上是已排序的,只是没有按照您期望的方式进行排序。

如果在创建SortCursor之前对各个游标进行排序,并使用字符串而不是数字,则将获得预期的结果。

MatrixCursor matrixCursor1 = new MatrixCursor(columnNames);
matrixCursor1.addRow(new String[]{"cursor 1 value C", "01"});
matrixCursor1.addRow(new String[]{"cursor 1 value B", "02"});
matrixCursor1.addRow(new String[]{"cursor 1 value A", "09"});

MatrixCursor matrixCursor2 = new MatrixCursor(columnNames);
matrixCursor2.addRow(new String[]{"cursor 2 value C", "06"});
matrixCursor2.addRow(new String[]{"cursor 2 value B", "08"});
matrixCursor2.addRow(new String[]{"cursor 2 value A", "70"});

会给你

V/SortCursor: Name: cursor 1 value C, Value: 01
V/SortCursor: Name: cursor 1 value B, Value: 02
V/SortCursor: Name: cursor 2 value C, Value: 06
V/SortCursor: Name: cursor 2 value B, Value: 08
V/SortCursor: Name: cursor 1 value A, Value: 09
V/SortCursor: Name: cursor 2 value A, Value: 70

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在PostGIS数据库中存储值网格,以便GeoServer可以对它进行轮廓处理?

如何在Delphi 7中根据TStringList的值对它进行排序

如何对存储桶中的脚本进行排序?

如何在Spring Boot中对mongo db存储库进行自定义排序查询?

如何使用ASP.NET Core中的存储库模式进行排序?

如何按每行中的值对存储在文本文件中的条目进行排序

中央存储库如何对版本号进行排序?

如何对熊猫中的时间值进行排序

如何在HashMap中对值进行排序

如何对嵌套列表中的值进行排序?

如何对Firebase子项中的值进行排序?

如何对列表中的字典值进行排序?

如何对 list() 中的值进行排序?

如何对DataFrame中的值进行排序

如何对存储在user.uid下的Firebase值进行排序?

如何按存储为值的日期对 Firebase 数据进行排序

使用Eclipse Collections库,如何对值进行MutableMap排序?

C:如何对结构中的值进行排序和子排序

对中的值进行排序

如何从本地存储中获取数组的值并显示它

如何存储值并在python中更新时更改它?

如何对在Oracle中存储为varchar的IP地址进行排序

如何对存储在字典中的元组内部的数组进行排序

如何使用通配符对查询中的存储桶聚合进行排序?

如何对列表中存储的数据进行排序和输出

如何从存储库中获取一个值,该值与表的两个字段进行比较

如何通过存储在另一个列表中的索引值对一个列表进行排序

如何为AOSP的git项目列表创建本地存储库,

如何对数组进行排序并填充它