我必须验证html中的数据列是否正确排序。我将它复制到Java列表中,制作一个我排序并进行比较的副本。不幸的是,Java的排序与创建表的程序不同(它也与Excel排序的方式相同)。所以我写了一个比较器并想知道评论?另外我想知道是否已经有一个类存在,你给它一个字符串的升序字符,它排序? Collator可能会这样做但我试着写它并且从来没有让它工作。这是我的比较器:
static class xcomp implements Comparator {
String cst = "'-–— !\"#$%&()*,./:;?@[\\]^ˆ_`{|}~¡¦¨¯´¸¿˜‘’‚“”„‹›+<=>±«»×÷0123456789AaªÁáÀàÂâÄäÃãÅåÆæBbCcÇçDdÐðEeÉéÈèÊêËëFfƒGgHhIiÍíÌìÎîÏïJjKklMmNnÑñoºÓóÒòÔôÖöÕõØøŒœPpQqRrSŠšßTtÞþ™UuÚúÙùÛûÜüVvWwXxYyÝýŸÿZzŽž";
public void xcomp(String sort) {
cst = sort;
}
@Override
public int compare(Object o1, Object o2) {
if (o1 == null && o2 == null) {
return 0;
}
if (o1 == null) {
return -1;
}
if (o2 == null) {
return 1;
}
String s1 = (String) o1;
String s2 = (String) o2;
int l1 = s1.length();
int l2 = s2.length();
if (s1.equals(s2)) {
return 0;
}
int l = Math.min(l1, l2);
for (int i = 0; i < l; i++) {
char c1 = s1.charAt(i);
char c2 = s2.charAt(i);
int p1 = cst.indexOf(c1);
int p2 = cst.indexOf(c2);
if (p1 == -1 || p2 == -1) {
p1 = (int) c1;
p2 = (int) c2;
}
if (p1 != p2) {
return (int) (p1 - p2);
}
}
// Strings are the same so far
return (l1 - l2);
}
答案 0 :(得分:0)
这是比较器中的一个错误。
if (p1 == -1 || p2 == -1) {
p1 = (int) c1;
p2 = (int) c2;
}
如果p1
或p2
为减1,则表示该字符不在您的收集序列中。您需要拯救(抛出异常),或将其一致地视为已知字符的“之前”或“之后”。那不是你在做什么。