Android アプリケーションには、場所のリストがあります。ユーザーの場所との距離に基づいて並べ替える必要があります。そのために、カスタム コンパレータを実装しました。
Collections.sort(houseList, new Comparator<HouseEntity>()
{
@Override
public int compare(HouseEntity house1, HouseEntity house2)
{
if(userLocation == null) return 0;
return (int) (userLocation.distanceTo(house1.location) - userLocation.distanceTo(house2.location));
}
});
私が行ったすべてのテストでうまく機能しています。ただし、一部のユーザーは次のエラーでクラッシュしました。
java.lang.IllegalArgumentException: Comparison method violates its general contract!
SO に関する他のすべての同じ問題を読んだ後、ロジックにエラーがある可能性がある場合にこのエラーが表示されると結論付けました (たとえば、a>b と b>a が同時に発生する可能性があります)。しかし、その論理エラーを再現するシナリオは見つかりませんでした。
このエラーの原因として考えられるシナリオは何ですか? どうすれば解決できますか?
助けてくれてありがとう