I am getting below error while comparing two objects.
My code :
public static Comparator<HotelResult> HotelLowRatingComparator = new Comparator<HotelResult>() {
public int compare(HotelResult s1, HotelResult s2) {
Double StudentName1 = Double.valueOf(s1.getStarRating());
Double StudentName2 =Double.valueOf(s2.getStarRating());
int val=(int) Math.round(StudentName1 - StudentName2);
Log.e("Comparator",String.valueOf(val));
//ascending order
return (int) Math.round(StudentName1 - StudentName2);
}
}
Error Log : FATAL EXCEPTION: main
Process: com.tech.booking, PID: 27473 java.lang.IllegalArgumentException: Comparison method violates its general contract! at java.util.TimSort.mergeLo(TimSort.java:761) at java.util.TimSort.mergeAt(TimSort.java:497) at java.util.TimSort.mergeCollapse(TimSort.java:421) at java.util.TimSort.sort(TimSort.java:210) at java.util.Arrays.sort(Arrays.java:1998) at java.util.Collections.sort(Collections.java:1900) at com.tech.booking.Hotel_Module.HotelSearchResult_Activity$4.onTabReselected(HotelSearchResult_Activity.java:692) at android.support.design.widget.TabLayout.dispatchTabReselected(TabLayout.java:1177) at android.support.design.widget.TabLayout.selectTab(TabLayout.java:1136) at android.support.design.widget.TabLayout.selectTab(TabLayout.java:1128) at android.support.design.widget.TabLayout$Tab.select(TabLayout.java:1427) at android.support.design.widget.TabLayout$TabView.performClick(TabLayout.java:1537) at android.view.View$PerformClick.run(View.java:21534) at android.os.Handler.handleCallback(Handler.java:815) at android.os.Handler.dispatchMessage(Handler.java:104) at android.os.Looper.loop(Looper.java:207) at android.app.ActivityThread.main(ActivityThread.java:5765) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:679)