Natural sort order is what we usually see in most file managers when browsing a list of numbered files, that it sorts the numerical part of the file name as a number instead of comparing it character by character. For instance:
Lexicographical sort |
Natural sort |
1.txt |
1.txt |
10.txt |
2.txt |
100.txt |
3.txt |
101.txt |
4.txt |
102.txt |
5.txt |
103.txt |
10.txt |
104.txt |
11.txt |
105.txt |
12.txt |
11.txt |
13.txt |
12.txt |
14.txt |
13.txt |
15.txt |
14.txt |
100.txt |
15.txt |
101.txt |
2.txt |
102.txt |
3.txt |
103.txt |
4.txt |
104.txt |
5.txt |
105.txt |
Lexicographical sort can be easily implemented using String::compareToIgnoreCase
, but it is not very acceptable for end users. However for natural sort, things is actually a little more complicated.
Introduction
For content-oriented Android application, how and where to store the content to display is a issue every developer will be concerned with. The Android framework provided a comprehensive solution with ContentProvider
(and a lot more) which suits quite well with a SQLite database; but in a lot of other scenarios, the app only need to have some information cached, while the majority of content is directly retrieved from network, thus eliminating the need for a database (and a complicated content scheme).
But when we look into the core of this issue, we will soon find out that it is in fact a problem of whether to have a central storage, and how to notify different components about a change.
This is my notebook for bash scripting.
Styling
Use Google style guide for shell.
This article is originally titled Abandoning treatment for X11, for my xkeymacs project.