如何使字母顺序的比较符具有与字母顺序不同的顺序

T. *_*ter 0 java char comparator

我的问题是我想比较一些不使用字母排序的字符.这是我的订单关系:A <B <T <Q <C <D <E <F ...

如何为此创建比较器?我必须写下这样的所有案例:

if (char1.equals(char2)) {
            return 0;
        } else if (char1.equals("A")) {
            return -1;
        } else if (char1.equals("B") && char2.equals("A")) {
            return 1;
        } else if (char1.equals("T")
                && (char2.equals("B") || char2.equals("A"))) {
            return 1;
        } else if (char1.equals("Q")
                && (char2.equals("T") || char2.equals("B") || char2
                        .equals("A"))) {
            return 1;
        } else if (char1.equals("C")
                && (char2.equals("Q") || char2.equals("T")
                        || char2.equals("B") || char2.equals("A"))) {
            return 1;
        } else if (char1.equals("D")
                && (char2.equals("C") || char2.equals("Q")
                        || char2.equals("T") || char2.equals("B") || char2
                            .equals("A"))) {
            return 1;
        } else if (char1.equals("E")
                && (char2.equals("D") || char2.equals("C")
                        || char2.equals("Q") || char2.equals("T")
                        || char2.equals("B") || char2.equals("A"))) {
            return 1;
        } else if (char1.equals("F")
                && (char2.equals("E") || char2.equals("D")
                        || char2.equals("C") || char2.equals("Q")
                        || char2.equals("T") || char2.equals("B") || char2
                            .equals("A"))) {
            return 1;
        }
Run Code Online (Sandbox Code Playgroud)

And*_*eas 6

如果您想使用自定义字符顺序比较字符串,请创建一个RuleBasedCollator,例如

String myRules = "< a, A < b, B < t, T < q, Q < 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" +
                 "< r, R < s, S < u, U < v, V < w, W < x, X < y, Y < z, Z";
RuleBasedCollator myCollator = new RuleBasedCollator(myRules);

String[] test = { "a", "B", "c", "D", "q", "T", "cc", "cB", "cq", "cT" };
Arrays.sort(test, myCollator);
System.out.println(Arrays.toString(test));
Run Code Online (Sandbox Code Playgroud)

产量

[a, B, T, q, c, cB, cT, cq, cc, D]
Run Code Online (Sandbox Code Playgroud)