i want to sort my json by one float parameter by Comparator . but its show me this error : Comparison method violates its general contract!
i have another Comparator class that is working properly but that one is Comparating an other thing
this is my Comparator :
public class MyChangeComparator implements Comparator<myContact> {
int type = 1;
public MyChangeComparator(int type) {
this.type = type;
}
@Override
public int compare(myContact myContact, myContact t1) {
if (myContact.getPercent_change_1h() == null || t1.getPercent_change_1h() == null
|| myContact.getPercent_change_24h() == null || t1.getPercent_change_24h() == null ||
myContact.getPercent_change_7d() == null || t1.getPercent_change_7d() == null){
return 0;
}
float m1 = 1;
float m2 = 2;
boolean ba = false;
boolean aa = false;
if (type == 1){
String a = myContact.getPercent_change_1h();
if (a.contains("-")){
a = a.replace("-" , "");
aa = true;
}
m1 = Float.parseFloat(a);
if (aa == true){
m1 = -m1;
aa = false;
}
String b = t1.getPercent_change_1h();
if (b.contains("-")){
b = b.replace("-" , "");
ba = true;
}
m2 = Float.parseFloat(b);
if (ba == true){
m2 = -m2;
ba = false;
}
}else if (type == 2){
String a = myContact.getPercent_change_24h();
a = a.replace("-" , "");
m1 = Float.parseFloat(a);
String b = t1.getPercent_change_24h();
b = b.replace("-" , "");
m2 = Float.parseFloat(b);
}else if (type == 3) {
String a = myContact.getPercent_change_7d();
a = a.replace("-" , "");
m1 = Float.parseFloat(a);
String b = t1.getPercent_change_7d();
b = b.replace("-" , "");
m2 = Float.parseFloat(b);
}
if (m1 < m2){
return 1;
}else if (m1 >= m2){
return -1;
}else {
return 0;
}
}
app is working when i change returns to this :
if (m1 < m2){
return -1;
}else if (m1 >= m2){
return 1;
}else {
return 0;
}
i think when i use return 1 app is crashing