示例代码如下:
//测试的bean
public class FitInfo {
private int x;
public FitInfo(){
}
public void setX(int x){
this.x = x;
}
public int getX(){
return x;
}
}
//测试的方法
public static void main(String[] args) {
List<FitInfo> fitInfos = new ArrayList();
FitInfo fitInfo = new FitInfo();
fitInfo.setX(5);
FitInfo fitInfo1 = new FitInfo();
fitInfo1.setX(4);
fitInfos.add(fitInfo);
fitInfos.add(fitInfo1);
Collections.sort(fitInfos, new BoxSortX());
for(FitInfo fi : fitInfos) {
System.out.print("fi: " + fi.getX() + "\n");
}
}
//说明:如果返回1.表明两个元素要进行交换,如果返回-1,表明两个元素不交互,所以下面的排序规则是升序排列
static class BoxSortX1 implements Comparator<FitInfo>
{
public int compare(FitInfo p1, FitInfo p2 )
{
if ( p1.getX() > p2.getX()){
return 1;
} else if ( p1.getX() < p2.getX()){
return -1;
}else{
return 0;
}
}
}
//建议使用这种写法,代码更加简洁,也更好理解
class BoxSortX implements Comparator<FitInfo> {
public int compare(FitInfo p1, FitInfo p2 ){
//如果是p1.getX() - p2.getX(),升序; p2.getX() - p1.getX();降序
return p2.getX() - p1.getX();
}
}