有两种方法可以做到这一点。
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的静态方法。
基于名称[对联系人进行排序的ArrayList的可能重复?](http://stackoverflow.com/questions/1814095/sorting-an-arraylist-of-contacts-based-on-name)和http://stackoverflow.com/questions/6957631/sort-java-collection – assylias
[在列表视图中对数字进行排序](http://himanshugpt.wordpress.com/2010/09/10/sorting-list-in-java/) – Venky