有两种方法可以做到这一点。
1、FriendProfile可以实现Comparable接口。
public class FriendProfile implements Comparable<FriendProfile>
{
public int compareTo(FriendProfile that)
{
// Descending order
return that.userPosition - this.userPosition;
}
}
...
Collections.sort(friendProfiles);
2. 你可以写一个比较器。
public class FriendProfileComparator implements Comparator<FriendProfile>
{
public int compare(FriendProfile fp1, FriendProfile fp2)
{
// Descending order
return fp2.userPosition - fp1.userPosition;
}
}
...
Collections.sort(friendProfiles, new FriendProfileComparator());
当比较对象而不是基元时,请注意您可以委托给包装对象 compareTo。例如return fp2.userPosition.compareTo(fp1.userPosition)
如果对象具有要实现的自然顺序,则第一个很有用。比如 Integer 实现了数字顺序,String 实现了字母顺序。如果您想要在不同情况下使用不同的订单,则第二个很有用。
如果你写了一个比较器,那么你需要考虑把它放在哪里。由于它没有状态,您可以将其编写为 Singleton 或 FriendProfile 的静态方法。