簡體   English   中英

如何按升序對 object arrays 的列表進行排序

[英]How to sort an List of object arrays in ascending order

我有一個 hibernate 實體 class:

    @Entity
    @Table(name = "grade")
    @JsonIgnoreType
    public class StudentMaster implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "grade_id", unique = true, nullable = false)
    private Integer gradeId;

    @Column(name = "grade_name")
    private String gradeName;
    //getter and setter
   }

我編寫了一個查詢,返回 object 數組列表: String query = select T.gradeId, T.gradeName from grade where available = 1;

這將返回 object 數組的列表

    List<Object[]> list = session.createQuery(query.toString()).list();

清單來了

    [0]
     >[0] = 5001
     >[1] = "10"
    [1]
     >[0] = 5002
     >[1] = "11"
    [2]
     >[0] = 5003
     >[1] = "4"
    [3]
     >[0] = 5004
     >[1] = "18" 
      and so on....

我正在嘗試按升序對它進行排序,例如 4、10、11、18 我嘗試使用下面的代碼片段但沒有奏效

   Collections.sort(list, new Comparator<StudentMaster>() {
        public int compare(StudentMaster s1, StudentMaster s2) {
            return s1.getGradeName().compareTo(s2.getGradeName());
        }
    });

有人可以在這里幫助我嗎? 我正在學習自己和編碼新手,所以需要幫助。 謝謝

我建議讓 DB 盡力而為並為您排序。 只需將 order by 添加到您的查詢中。

更新:

由於您想通過存儲為字符串的 integer 值來訂購,因此您需要使用TO_NUMBER或特定的 SQL 方言語法將其轉換為 integer。 內存排序可以這樣實現:

new Comparator<Object[]>() {
 public int compare(Object[] o1, Object[] o2) {
 return Integer.valueOf((String) o1[1]).compareTo(Integer.valueOf((String) o2[1])); 
} 
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM