Supongamos que tenemos el siguiente objeto:
Java public class Fruit{ private String fruitName; private String fruitDesc; private int quantity; public String getFruitName() { return fruitName; } public void setFruitName(String fruitName) { this.fruitName = fruitName; } public String getFruitDesc() { return fruitDesc; } public void setFruitDesc(String fruitDesc) { this.fruitDesc = fruitDesc; } public int getQuantity() { return quantity; } public void setQuantity(int quantity) { this.quantity = quantity; } }12345678910111213141516171819202122232425 publicclassFruit{ privateStringfruitName; privateStringfruitDesc; privateintquantity; publicStringgetFruitName(){ returnfruitName; } publicvoidsetFruitName(StringfruitName){ thisfruitName=fruitName; } publicStringgetFruitDesc(){ returnfruitDesc; } publicvoidsetFruitDesc(StringfruitDesc){ thisfruitDesc=fruitDesc; } publicintgetQuantity(){ returnquantity; } publicvoidsetQuantity(intquantity){ thisquantity=quantity; }}
Y, por más claridad, lo seteamos de la siguiente manera:
Java List<Fruit> fruits= new ArrayList<Fruit>(); Fruit fruit; for(int i=0;i<100;i++) { fruit = new fruit(); fruit.setname(...); fruits.add(fruit); }123456789 List<Fruit> fruits=newArrayList<Fruit>(); Fruit fruit;for(inti=0;i<100;i++){ fruit=newfruit(); fruitsetname(); fruitsadd(fruit);}
Lo que tenemos ahora es una lista desordenada, en la que los elementos se han ido introduciendo según el bucle, es decir en una ordenación pseudonumérica, por decirlo así. Pero nosotros queremos ordenador alfabéticamente por algún campo mucho más práctico, como puede ser la propiedad fruitName que hemos definido en el modelo inicial. Para hacer esto usaremos en primer lugar un recurso comparador (Comparator) y a continuación el método sort del objeto Collections, de la siguiente manera:
Java List<Fruit> fruits= new ArrayList<Fruit>(); Fruit fruit; for(int i = 0; i < 100; i++) { fruit = new Fruit(); fruit.setname(...); fruits.add(fruit); } // Sorting Collections.sort(fruits, new Comparator<Fruit>() { @Override public int compare(Fruit fruit2, Fruit fruit1) { return fruit1.fruitName.compareTo(fruit2.fruitName); } });12345678910111213141516171819 List<Fruit>fruits=newArrayList<Fruit>(); Fruit fruit;for(inti=0;i<100;i++){ fruit=newFruit(); fruitsetname(); fruitsadd(fruit);} // SortingCollectionssort(fruits,newComparator<Fruit>(){ @Override publicintcompare(Fruit fruit2,Fruit fruit1) { return fruit1fruitNamecompareTo(fruit2fruitName); } });
Y voilá, ya tenemos el ArrayList ordenado por fruitName.