Jag kom på det här. Jag använde Collator-klassen för korrekt sortering.
FYI det ser ut så här (detta är sortering av ArrayList):
public class AccessSorter
{
final static String letters = "< a, A < b, B < c, C < d, D < e, E < f, F < g, G < h, H < i, I < j, J < k, K < l, L < m, M < n, N < o, O < p, P < q, Q < r, R < s, S < t, T < u, U < v, V < w, W < x, X < y, Y < z, Z";
final static String digits = "< 0 < 1 < 2 < 3 < 4 < 5 < 6 < 7 < 8 < 9";
final static String special = "< '.' < '_'";
private RuleBasedCollator accessCollator;
AccessSorter()
{
try
{
accessCollator = new RuleBasedCollator(special + digits + letters);
}
catch (ParseException e)
{
e.printStackTrace();
}
}
SomeComparator getSomeComparator()
{
return new SomeComparator();
}
class SomeComparator implements Comparator<String[]>
{
@Override
public int compare(String[] s1, String[] s2)
{
return accessCollator.compare(s1[1], s2[1]);
}
}
}
exempel på användning:
Collections.sort(someCollectionOfStringArray, new AccessSorter().getSomeComparator()
Och nu behöver du inte oroa dig för samlingar av åtkomst eller mySQL. Du sätter regler själv. Naturligtvis tar det lite tid att sortera en sådan array.
Kom ihåg att om du behöver sortera stora arrayer mer än en gång, överväg att använda getCollatorKey() för att öka effektiviteten.
Kom också ihåg om du behöver lägga till samlare semikolon, punkter, citattecken sätter dem i ' '.
Jag hoppas att det hjälper dig på något sätt. Hälsningar.