Mad*_*avi -6 java compare comparator
任何人都可以请你解释一下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"),它说"比较它的两个参数的顺序.返回一个负整数,零,或第一个参数的正整数小于,等于或大于第二个参数."
当输入是两个字符串时它如何比较小于或大于?我认为输出不是基于字母顺序,因为"3XL,XS,S,M,L,XL,XXL"是我得到的输出.
Strings在词典顺序中是可比较的(即,它们出现在字典中的顺序).如果你想实现Comparator衣服尺寸,你必须自己编写逻辑.例如:
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);
}
}
Run Code Online (Sandbox Code Playgroud)
注意:这Comparator假设两个字符串都代表有效的衣服尺寸.如果无法做出这种假设,则必须添加一些错误处理.
| 归档时间: |
|
| 查看次数: |
698 次 |
| 最近记录: |