我在比较两个对象时遇到错误。
我的代码:
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);
}
}
错误日志: 致命的例外:主要
流程:com.tech.booking,PID:27473 java.lang.IllegalArgumentException:比较方法违反了它的一般合同! 在java.util.TimSort.mergeLo(TimSort.java:761) 在java.util.TimSort.mergeAt(TimSort.java:497) 在java.util.TimSort.mergeCollapse(TimSort.java:421) 在java.util.TimSort.sort(TimSort.java:210) at java.util.Arrays.sort(Arrays.java:1998) 在java.util.Collections.sort(Collections.java:1900) at com.tech.booking.Hotel_Module.HotelSearchResult_Activity $ 4.onTabReselected(HotelSearchResult_Activity.java:692) 在android.support.design.widget.TabLayout.dispatchTabReselected(TabLayout.java:1177) 在android.support.design.widget.TabLayout.selectTab(TabLayout.java:1136) 在android.support.design.widget.TabLayout.selectTab(TabLayout.java:1128) 在android.support.design.widget.TabLayout $ Tab.select(TabLayout.java:1427) 在android.support.design.widget.TabLayout $ TabView.performClick(TabLayout.java:1537) 在android.view.View $ PerformClick.run(View.java:21534) 在android.os.Handler.handleCallback(Handler.java:815) 在android.os.Handler.dispatchMessage(Handler.java:104) 在android.os.Looper.loop(Looper.java:207) 在android.app.ActivityThread.main(ActivityThread.java:5765) at java.lang.reflect.Method.invoke(Native Method) 在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:789) 在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:679)