これには 2 つの方法があります。
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. Comparator を書くことができます。
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 はアルファベット順に実装します。2 番目は、異なる状況で異なる順序が必要な場合に役立ちます。
Comparator を作成する場合は、どこに配置するかを検討する必要があります。状態がないため、Singleton または FriendProfile の静的メソッドとして記述できます。