Oi pessoal,
Preciso usar o método compareTo para comparar duas datas, mais não sei bem como faço isso com os atributos que tenho na classe Pessoa(){}, preciso comparar dia, mês e ano para saber qual a data mais recente.
Se alguém puder me ajudar, agradeceria muito mesmo, tenho certa urgência… Alguém sabe como faço o compareTo nessa classe para comparar duas datas??
Obs: sou iniciante na linguagem 
public class Data implements Comparable<Data>{
private int dia;
private int mes;
private int ano;
private Date data = new Date(getDia(),getMes(),getAno());
public void setData(Date data) {
this.data = data;
}
public Date getData() {
return data;
}
public Data(int dia, int mes, int ano){
this.dia = dia;
this.mes = mes;
this.ano = ano;
}
public void setDia(int dia) {
this.dia = dia;
}
public void setMes(int mes) {
this.mes = mes;
}
public void setAno(int ano) {
this.ano = ano;
}
public int getDia() {
return dia;
}
public int getMes() {
return mes;
}
public int getAno() {
return ano;
}
@Override
public String toString(){
String data = getDia()+"/"+getMes()+"/"+getAno();
return data;
}
@Override
public int compareTo(Data outradata) {
if(getData() > outradata.getData()){
return 1;
}else if(getData() < outradata.getData()){
return -1;
}else
return 0;
}
Bem não sei se você quer fazer tudo no braço ou quer utilizar alguma biblioteca, Fiz os dois casos, primeiro utilizei a biblioteca de data do java 8 : LocalDate
, como essa classe já implementou o método compareTo
, eu só reaproveitei.
public class Data implements Comparable<LocalDate>{
private int dia;
private int mes;
private int ano;
private LocalDate data;
public Data(int dia, int mes, int ano){
this.dia = dia;
this.mes = mes;
this.ano = ano;
data = LocalDate.of(ano, mes, dia);
}
@Override
public int compareTo(LocalDate o) {
return data.compareTo(o);
}
Fazendo no Braço
package raquel;
import java.time.LocalDate;
public class Data implements Comparable<Data>{
private int dia;
private int mes;
private int ano;
private LocalDate data;
public Data(int dia, int mes, int ano){
this.dia = dia;
this.mes = mes;
this.ano = ano;
data = LocalDate.of(ano, mes, dia);
}
@Override
public int compareTo(Data o) {
if(this.getAno() > o.getAno()){
return 1;
}else if(this.getAno() == o.getAno()) {
//Caso os anos sejam iguais, Verificamos os meses
if(this.getMes() > o.getMes()){
return 1;
}else if(this.getMes() == o.getMes()){
// Caso os meses forem iguais verificamos os dias
if(this.getDia() > o.getDia()){
return 1;
} else if(this.getDia() == o.getDia()){
return 0;
}else{
return -1;
}
}else{
return -1;
}
}else{
return -1;
}
}
public int getDia() {
return dia;
}
public void setDia(int dia) {
this.dia = dia;
}
public int getMes() {
return mes;
}
public void setMes(int mes) {
this.mes = mes;
}
public int getAno() {
return ano;
}
public void setAno(int ano) {
this.ano = ano;
}
public LocalDate getData() {
return data;
}
@Override
public String toString() {
return dia + "/" + mes +"/" +ano;
}
}
Teste
public static void main(String[] args) {
Data data1 = new Data(19, 1, 1998);
Data data2 = new Data(19, 1, 1996);
Data data3 = new Data(19, 1, 1999);
Data data4 = new Data(19, 1, 1992);
List<Data> list = Arrays.asList(data1,data2,data3,data4);
Collections.sort(list);
System.out.println(list);
}
Espero ter ajudado