我有一個物體
@Entity
public class User{
@Id
private int id;
private int score;
....
}
List<User> userlist=repo.findAll();
從資料庫中獲取它后,我想按score. 我可以從資料庫中排序,但在代碼方面會有一些事情要做。
uj5u.com熱心網友回復:
Collections.sort(userlist, Comparator.comparingInt(User::getScore));
或者
userlist.sort(Comparator.comparing(User::getScore));
uj5u.com熱心網友回復:
對資料庫進行排序更有效。為什么不使用這個功能?
無論如何,要以編程方式對串列進行排序,您可以使用 java 流:
List<User> userList=repo.findAll();
List<User> sortedList = userList.stream().sorted((o1, o2) ->
{
return Integer.compare(o1.getScore(), o2.getScore());
}).collect(Collectors.toList());
您將串列轉換為流,然后使用比較器函式(其中的 lambda)來比較您想要的User物件中的任何內容。在這種情況下,得分。當比較器回傳值 > 0 時,表示當前物件大于“下一個”物件。如果 value = 0 則它們相等,如果它 < 0 則它們更小。
這不是唯一的方法。它可以手動完成,通過Collections類等等。
uj5u.com熱心網友回復:
您可以對存盤庫中的資料進行排序。它應該看起來像這樣:
interface UserRepository extends JpaRepository<User, Long> {
List<User> findByOrderByScoreDesc();
}
這將自動為您生成查詢。如果要更改排序順序,也可以使用 Asc 而不是 Desc。
這比從代碼中排序要好,因為您也可以對這個串列進行分頁,而無需從資料庫中獲取所有資料。
您可以在此處查看有關此內容的更多詳細資訊。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/408116.html
標籤:
下一篇:查詢在表中顯示相同的值
