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)
如果您想使用自定义字符顺序比较字符串,请创建一个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)
| 归档时间: |
|
| 查看次数: |
329 次 |
| 最近记录: |