Tarihe göre ArrayList nesneleri sıralama?
Biri bana bu konuda yardım edebilir mi? Bulduğum her örnek benim öğeleri tarihe göre sıralanmış ihtiyacım var ise bu alfabetik olarak yapıyor.
Benim ArrayList üzerinde datamembers bir DateTime nesnesi nesneleri içerir. DateTime işlevleri diyebilirim:
lt() // less-than
lteq() // less-than-or-equal-to
Gibi bir şey yapabilirim karşılaştırmak için:
if(myList.get(i).lt(myList.get(j))){
// ...
}
Gerçekten içinde varsa blok ne yapacağımı bilmiyorum. Herhangi bir fikir?
CEVAP
Nesne karşılaştırılabilir yapabilirsiniz:
public static class MyObject implements Comparable<MyObject> {
private Date dateTime;
public Date getDateTime() {
return dateTime;
}
public void setDateTime(Date datetime) {
this.dateTime = datetime;
}
@Override
public int compareTo(MyObject o) {
return getDateTime().compareTo(o.getDateTime());
}
}
Ve sonra seni arayarak sıralama:
Collections.sort(myList);
Ancak bazen model, farklı özellikleri sıralamak istediğiniz gibi değiştirmek istemiyorum. Bu durumda, anında karşılaştırıcı oluşturabilirsiniz:
Collections.sort(myList, new Comparator<MyObject>() {
public int compare(MyObject o1, MyObject o2) {
return o1.getDateTime().compareTo(o2.getDateTime());
}
});
Ancak, yukarıda ise dateTime karşılaştırma sırasında boş olmadığından eminseniz yalnızca çalışır. Bilge boş işlemek için de NullPointerExceptions önlemek için:
public static class MyObject implements Comparable<MyObject> {
private Date dateTime;
public Date getDateTime() {
return dateTime;
}
public void setDateTime(Date datetime) {
this.dateTime = datetime;
}
@Override
public int compareTo(MyObject o) {
if (getDateTime() == null || o.getDateTime() == null)
return 0;
return getDateTime().compareTo(o.getDateTime());
}
}
Ya da ikinci bir örnek:
Collections.sort(myList, new Comparator<MyObject>() {
public int compare(MyObject o1, MyObject o2) {
if (o1.getDateTime() == null || o2.getDateTime() == null)
return 0;
return o1.getDateTime().compareTo(o2.getDateTime());
}
});
Sıralama Tarihe Göre Nesne Dizisi Java...
Sıralama özelliği ile özel Nesne Array...
Sadece tarihe göre iki DATETİME SQL Se...
Nasıl birden çok alana göre nesneleri ...
Özel nesneleri bir vektör sıralama...