首页 新闻 赞助 找找看

List.sort 比较器排序

0
悬赏园豆:20 [已解决问题] 解决于 2018-08-01 08:35

查询到的数据放入List<T>中,

T为实体类,假设有两个字段A和B

当 A==1时将其排序靠前,并按照B字段排序

也就说,A==1的数据,要在A!=1的数据前面,

A==1的数据还要再根据B字段排序,请不吝赐教。

长风Jsonol的主页 长风Jsonol | 初学一级 | 园豆:100
提问于:2018-07-31 13:32
< >
分享
最佳答案
0
public class TestClass {

    private int A;
    private int B;
    public int getA() {
        return A;
    }
    public void setA(int a) {
        A = a;
    }
    public int getB() {
        return B;
    }
    public void setB(int b) {
        B = b;
    }
    
    
    public static void main(String[] args) {
        List<TestClass> lists = new ArrayList<>();
    
        Collections.sort(lists, new Comparator<TestClass>() {
            @Override
            public int compare(TestClass o1, TestClass o2) {
                //自定义你的排序规则就行了
                return 0;
                
            }
        });

    }
    
}    
收获园豆:20
让我发会呆 | 老鸟四级 |园豆:2929 | 2018-07-31 13:53

规则我给出来了,自定义排序我就是不知道怎么写才提问的

长风Jsonol | 园豆:100 (初学一级) | 2018-07-31 13:56

@长风Jsonol: 因为你提问里的规则并没有给全,其实你只需要在compare里写if else判断就行了。


public int compare(TestClass o1, TestClass o2) {
    if (o2.getA() == 1) {
        if (o1.getA() == 1) {
            return o2.getB() - o1.getB();
        } else {
            return 1;
        }
    } else {
        if (o1.getA() == 1) {
            return -1;
        } else {
        //TODO A都不等1,怎么排序?
return ; } } }

这个就是按照你给的条件排序的

 
让我发会呆 | 园豆:2929 (老鸟四级) | 2018-07-31 14:07
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册