两种方式,一种是要比较的元素实现Comparable
接口,另一种是实现Comparator
接口创建一个比较器
1、Comparator
/**
* Created by liuquan on 2018/7/8.
*/
public class BaseEntity {
//排序字段
public int sort;
public int getSort() {
return sort;
}
public void setSort(int sort) {
this.sort = sort;
}
@Override
public String toString() {
return "BaseEntity{" +
"sort=" + sort +
'}';
}
}
/**
* Created by liuquan on 2018/7/8.
*/
public class ComparatorSortBySort implements Comparator<BaseEntity> {
@Override
public int compare(BaseEntity o1, BaseEntity o2) {
if(o1.getSort() > o2.getSort()) {
return 1;
}else if(o1.getSort() < o2.getSort()) {
return -1;
}else {
return 0;
}
}
}
用法
Collections.sort(list, new ComparatorSortBySort());
结果
[BaseEntity{sort=7}, BaseEntity{sort=4}, BaseEntity{sort=0}, BaseEntity{sort=9}, BaseEntity{sort=5}, BaseEntity{sort=8}, BaseEntity{sort=3}, BaseEntity{sort=1}, BaseEntity{sort=6}, BaseEntity{sort=2}]
[BaseEntity{sort=0}, BaseEntity{sort=1}, BaseEntity{sort=2}, BaseEntity{sort=3}, BaseEntity{sort=4}, BaseEntity{sort=5}, BaseEntity{sort=6}, BaseEntity{sort=7}, BaseEntity{sort=8}, BaseEntity{sort=9}]
Process finished with exit code 0
2、Comparable
/**
* Created by liuquan on 2018/7/8.
*/
public class BaseEntity implements Comparable<BaseEntity> {
//排序字段
public int sort;
public int getSort() {
return sort;
}
public void setSort(int sort) {
this.sort = sort;
}
@Override
public String toString() {
return "BaseEntity{" +
"sort=" + sort +
'}';
}
@Override
public int compareTo(BaseEntity o) {
if (this.getSort() > o.getSort()) {
return -1;
} else if (this.getSort() < o.getSort()) {
return 1;
} else {
return 0;
}
}
}
用法
Collections.sort(list);
结果
[BaseEntity{sort=7}, BaseEntity{sort=4}, BaseEntity{sort=0}, BaseEntity{sort=9}, BaseEntity{sort=5}, BaseEntity{sort=8}, BaseEntity{sort=3}, BaseEntity{sort=1}, BaseEntity{sort=6}, BaseEntity{sort=2}]
[BaseEntity{sort=9}, BaseEntity{sort=8}, BaseEntity{sort=7}, BaseEntity{sort=6}, BaseEntity{sort=5}, BaseEntity{sort=4}, BaseEntity{sort=3}, BaseEntity{sort=2}, BaseEntity{sort=1}, BaseEntity{sort=0}]
Process finished with exit code 0