下面实现的compare是按对象的a属性倒序排序,如何在这个排序中排除掉b属性等于4或5的,
相当于b属性等于4或5的不参与这个倒序排序
List<AA> list = new ArrayList<>();
AA a1 = new AA().setA(1).setB(4);
AA a2 = new AA().setA(0).setB(3);
AA a3 = new AA().setA(0).setB(5);
AA a4 = new AA().setA(0).setB(2);
AA a5 = new AA().setA(1).setB(5);
AA a6 = new AA().setA(1).setB(1);
AA a7 = new AA().setA(0).setB(0);
AA a8 = new AA().setA(1).setB(5);
list.add(a1);list.add(a2);list.add(a3);list.add(a4);list.add(a5);list.add(a6);list.add(a7);list.add(a8);
list.sort((x,y)->{
if(x.getA() > y.getA()){
return -1;
}
if(x.getA() == y.getA()){
return 0;
}
return 1;
});
package com.xm.officialaccounts.utils;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
* @author
* @date created in 17:03 2021/6/4
*/
public class a implements Comparable{
int a;
int b;
@Override
public int compareTo(Object o) {
a other = (a)o;
if(b == 4 || b == 5){
if(other.b == 4 || other.b == 5){
// 都是a=0级别
return 0;
}else {
return 0 > other.a ? -1 :1;
}
}else {
if(other.b == 4 || other.b == 5){
return a > 0 ? -1:1;
}else {
return a > other.a ? -1:1;
}
}
}
public a(int a,int b){
this.a = a;
this.b = b;
}
public static void main(String[] args) {
List<a> list = new ArrayList<>();
a a1 = new a(1,4);
a a2 = new a(0,3);
a a3 = new a(0,5);
a a4 = new a(0,2);
a a5 = new a(1,5);
a a6 = new a(1,1);
a a7 = new a(0,0);
a a8 = new a(1,5);
list.add(a1);list.add(a2);list.add(a3);list.add(a4);list.add(a5);list.add(a6);list.add(a7);list.add(a8);
Collections.sort(list);
list.stream().forEach(t ->System.out.println(t.a+"========="+t.b));
}
/* 1=========1
1=========4
0=========3
0=========5
0=========2
1=========5
0=========0
1=========5*/
}
不参与排序,是指 删除掉不参与的,然后排序,在把不参与的加到末尾?或者是例如a5加到索引是4的位置?
减操作,然后单 &
没理解。。。