如何在Java中对列表进行排序?
在Java中,我有一个列表,我想对它进行排序。有没有一种方法可以帮我做到这一点 要对列表进行排序的列表 我想用LBetAction对它进行排序 实体:如何在Java中对列表进行排序?,java,Java,在Java中,我有一个列表,我想对它进行排序。有没有一种方法可以帮我做到这一点 要对列表进行排序的列表 我想用LBetAction对它进行排序 实体: @Entity @Table(name="TG_CAUTION") @Inheritance(strategy=InheritanceType.JOINED) public abstract class Caution implements Serializable { private static final long serialVersio
@Entity
@Table(name="TG_CAUTION")
@Inheritance(strategy=InheritanceType.JOINED)
public abstract class Caution implements Serializable {
private static final long serialVersionUID = 1L;
@Transient
public static String NOM_DOSSIER_CAUTION_DEFAULT =" ";
@Id
@SequenceGenerator(name="TG_CAUTION_IDCAUTION_GENERATOR", sequenceName="SID_CAUTION" , allocationSize=1)
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="TG_CAUTION_IDCAUTION_GENERATOR")
@Column(name="ID_CAUTION")
private long idCaution;
@Column(name="DT_CAUTION")
private Timestamp dtCaution;
@Column(name="DT_ETAT")
private Timestamp dtEtat;
@Column(name="DT_RECEPTION")
private Timestamp dtReception;
@Column(name="MT_CAUTION" ,columnDefinition="number")
private double mtCaution;
@Column(name="RF_DOSSIER")
private String rfDossier;
//bi-directional many-to-one association to TcEtatCaution
@ManyToOne
@JoinColumn(name="CD_ETAT_CAUTION")
private EtatCaution tcEtatCaution;
//bi-directional many-to-one association to TgAgentCaution
@ManyToOne
@JoinColumn(name="ID_AGENT")
private AgentCaution tgAgentCaution;
//bi-directional many-to-one association to TgCaution
@ManyToOne
@JoinColumn(name="ID_CAUTION_REMPLACEE")
private Caution tgCaution;
//bi-directional many-to-one association to TgCaution
@OneToMany(mappedBy="tgCaution")
private List<Caution> tgCautions;
//bi-directional many-to-one association to TgCompteCaution
@ManyToOne
@JoinColumn(name="ID_COMPTE_CAUTION")
private CompteCaution tgCompteCaution;
//bi-directional many-to-one association to TgHistoCaution
@OneToMany(mappedBy="tgCaution")
private List<HistoCaution> tgHistoCautions;
//bi-directional many-to-one association to TgRejet
@OneToMany(mappedBy="tgCaution")
private List<Rejet> tgRejets;
//bi-directional many-to-one association to TgApprehension
//@OneToMany(mappedBy="tgCaution")
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JoinColumn(name="ID_CAUTION")
private List<Apprehension> tgApprehensions;
//bi-directional many-to-one association to TgBordereau
@OneToMany(mappedBy="tgCaution")
private List<Bordereau> tgBordereaus;
//bi-directional many-to-one association to TgTransfertSirepa
@OneToMany(mappedBy="tgCaution")
private List<TransfertSirepa> tgTransfertSirepas;
public Caution() {
}
//getters and setters
}
使您的实体类实现具有可比性 然后,只需调用Collections.sortmyList。您需要实现一个comparator接口。我已经回答了一个类似的问题。这对你有帮助 这篇文章将帮助你在相关关系上使用@OrderBy,例如
//bi-directional many-to-one association to TgCaution
@OneToMany(mappedBy="tgCaution")
@OrderBy("lbEtatCaution ASC")
private List<Caution> tgCautions;
有关更多信息,请参见从可比较的接口和 使用
你读过comparators和Collections.sort吗?没有,我创建了一个示例,但我不知道如何进行排序。我想通过LBetAction attibuteYes对其进行排序,这就是你在Comparable接口定义的compareTo方法中所做的。只是编辑了我的回答,给出了一个示例实现。@Jandorenhaus,在使用Comparable时,他将不得不修改同一个类。使用comparator,他可以创建一个完全不同的comparator并将其传递给Collections.sortAh,这是一个字符串。我的错误。更正高于+1,这是唯一一篇讨论查询级别排序的帖子,事实上这是最好的方法。为什么我首先要得到列表,而不是对它进行排序,而应该得到排序后的列表本身。谢谢,我使用Jan Doerrenhaus解决方案解决了这个问题!谢谢,我用Jan Doerrenhaus解决方案解决了这个问题!谢谢,我用Jan Doerrenhaus解决方案解决了这个问题!
public int compareTo(EtatCaution compareObject)
{
return lbEtatCaution.compareTo(compareObject.lbEtatCaution);
}
//bi-directional many-to-one association to TgCaution
@OneToMany(mappedBy="tgCaution")
@OrderBy("lbEtatCaution ASC")
private List<Caution> tgCautions;
Collection.sort(yourList);