繁体   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