如何在Java中对列表进行排序?

如何在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

在Java中,我有一个列表,我想对它进行排序。有没有一种方法可以帮我做到这一点

要对列表进行排序的列表

我想用LBetAction对它进行排序

实体:

@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);