如何" java.util.Comparator.compare(String o1,String o2)"方法有效

时间:2016-05-24 07:04:13

标签: java compare comparator

任何人都可以向我解释一下java"比较"该方法适用于输入"XXXXS, XXXS, XXS, XS,S,M, L,XL,XXL,3XL"

如果输入为"3XL,XS,S,M,L,XL,XXL",则输出为"3XL,XS,S,M,L,XL,XXL",但我想将输出设为"XS,S,M,L,XL,XXL,3XL"

根据java文档("https://docs.oracle.com/javase/7/docs/api/java/util/Comparator.html"),它说 "比较其两个参数的顺序。当第一个参数小于,等于或大于第二个参数时,返回负整数,零或正整数。"

当输入是两个字符串时它的比较小于或大于?我认为输出不是基于字母顺序,因为" 3XL,XS,S,M,L,XL,XXL"是我得到的输出。

1 个答案:

答案 0 :(得分:5)

String在词典顺序中是可比较的(即,它们出现在词典中的顺序)。如果你想为衣服尺码实施Comparator,你必须自己编写逻辑。 E.g:

public class ClothesSizeComparator implements Comparator<String> {
    private static final List<String> SIZES = 
        Arrays.asList("XS", "S", "M", "L", "XL", "XXL", "3XL");

    @Override
    public int compare(String s1, String s2) {
        int s1pos = SIZES.indexOf(s1);
        int s2pos = SIZES.indexOf(s2);
        return Integer.compare(s1pos, s2pos);
    }
}

注意:此Comparator假设两个字符串都代表有效的衣服尺寸。如果无法做出这种假设,则必须添加一些错误处理。