gpt4 book ai didi

java - 使用 Comparable 按 2 个字段比较两个对象 ASC 和 DESC

转载 作者:行者123 更新时间:2023-12-02 05:33:49 25 4
gpt4 key购买 nike

我想比较实现Comparable的类的两个对象,我需要使用两个java.sql.Time对象ASC和DESC来比较对象,我在mysql中对它们进行排序:

...order by startTime ASC, endTime DESC

我需要以同样的方式在java中对它们进行排序,但我只使用:

@Override
public int compareTo(Cita o) {
return (getHoraInicio().compareTo(o.getHoraInicio()));
}

但我不知道如何用 mysql、ASC 和 DESC 这样的两个字段对它们进行排序。这是我想要排序的类的完整实现。

import java.text.SimpleDateFormat;
import java.sql.Time;

public class Cita implements Comparable<Cita> {

public Time horaInicio;
public Time horaTermino;
public Paciente paciente;
public String actividad;
public String observacion;
public String recordar;
public String ciudad;
public String TipoCita;
public String fecha;
public int idPaciente;
public int idCita;

public Cita() {
}

public Cita(String fecha, Time horaInicio, Time horaTermino, int idPaciente, String actividad,
String observacion, String recordar, String ciudad, String tipoCita) {
this.fecha = fecha;
this.horaInicio = horaInicio;
this.horaTermino = horaTermino;
this.idPaciente = idPaciente;
this.actividad = actividad;
this.observacion = observacion;
this.recordar = recordar;
this.ciudad = ciudad;
this.TipoCita = tipoCita;
}

public Cita(int idCita, String fecha, Time horaInicio, Time horaTermino, Paciente paciente, String actividad,
String observacion, String recordar, String ciudad, String tipoCita) {
this.idCita = idCita;
this.fecha = fecha;
this.horaInicio = horaInicio;
this.horaTermino = horaTermino;
this.paciente = paciente;
this.actividad = actividad;
this.observacion = observacion;
this.recordar = recordar;
this.ciudad = ciudad;
this.TipoCita = tipoCita;
}

@Override
public int compareTo(Cita o) {
return (getHoraInicio().compareTo(o.getHoraInicio()));
}

public int getIdCita() {
return idCita;
}

public void setIdCita(int idCita) {
this.idCita = idCita;
}

public Time getHoraInicio() {
return horaInicio;
}

public void setHoraInicio(Time horaInicio) {
this.horaInicio = horaInicio;
}

public Time getHoraTermino() {
return horaTermino;
}

public void setHoraTermino(Time horaTermino) {
this.horaTermino = horaTermino;
}

public Paciente getPaciente() {
return paciente;
}

public void setPaciente(Paciente paciente) {
this.paciente = paciente;
}

public String getActividad() {
return actividad;
}

public void setActividad(String actividad) {
this.actividad = actividad;
}

public String getObservacion() {
return observacion;
}

public void setObservacion(String observacion) {
this.observacion = observacion;
}

public String getRecordar() {
return recordar;
}

public void setRecordar(String recordar) {
this.recordar = recordar;
}

public String getCiudad() {
return ciudad;
}

public void setCiudad(String ciudad) {
this.ciudad = ciudad;
}

public String getTipoCita() {
return TipoCita;
}

public void setTipoCita(String TipoCita) {
this.TipoCita = TipoCita;
}

public int getIdPaciente() {
return idPaciente;
}

public void setIdPaciente(int idPaciente) {
this.idPaciente = idPaciente;
}

@Override
public int hashCode() {
int hash = 3;
hash = 71 * hash + this.idCita;
return hash;
}

@Override
public boolean equals(Object obj) {
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
final Cita other = (Cita) obj;
if (this.idCita != other.idCita) {
return false;
}
return true;
}

public String getFecha() {
return fecha;
}

public void setFecha(String fecha) {
this.fecha = fecha;
}

@Override
public String toString() {
SimpleDateFormat formatohora = new SimpleDateFormat("h:mm");
return formatohora.format(horaInicio) + " - " + formatohora.format(horaTermino) + ", " + paciente.getNombre();
}

}

最佳答案

在平局中使用“其他”对象作为左侧操作数进行比较(有效地颠倒顺序)。您还可以对结束时间进行正常比较并否定答案。

@Override
public int compareTo(Cita o) {
int asc = getHoraInicio().compareTo(o.getHoraInicio());
if (asc != 0) { return asc; }
return o.getHoraTermino.compareTo(getHoraTermino())
}

注意,我假设 HoraTermino 映射到 endTime

关于java - 使用 Comparable 按 2 个字段比较两个对象 ASC 和 DESC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25235064/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com