Přišel jsem na to. Pro správné třídění jsem použil třídu Collator.
FYI vypadá to takto (toto je řazení 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]);
}
}
}
příklad použití:
Collections.sort(someCollectionOfStringArray, new AccessSorter().getSomeComparator()
A nyní se nemusíte starat o kolace přístupu nebo mySQL. Pravidla si určujete sami. Seřadit takové pole samozřejmě nějakou dobu trvá.
Pamatujte si, že pokud potřebujete seřadit velká pole více než jednou, zvažte použití getCollatorKey() ke zvýšení efektivity.
Pamatujte také, pokud potřebujete přidat do středníky zakladače, tečky, uvozovky je vložte do „ “.
Doufám, že vám to nějak pomůže. S pozdravem.