谁能解释一下java“ compare”方法如何为输入工作 "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”),它说“比较两个参数的顺序。返回一个负整数,零或正整数,因为第一个参数小于,等于或大于第二个参数。”
当输入是两个Strings时,它如何比较小于或大于?我认为输出不是基于字母顺序的,因为我得到的输出是“ 3XL,XS,S,S,M,L,XL,XXL”。
String
s在字典顺序(即它们在字典中的出现顺序)中可比。如果要实现Comparator
衣服尺寸的A,则必须自己编写逻辑。例如:
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
假设两个字符串都代表有效的衣服尺寸。如果无法做出此假设,则必须添加一些错误处理。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句