Ciao a tutti, ho scritto il codice per ordinare degli oggetti, ma non vengono ordinati, ecco il codice:
Codice PHP:
package it.ordinare.liste.test;
import java.util.ArrayList;
import java.util.Collections;
public class Main {
/**
* @param args
*/
public static void main(String[] args) {
ArrayList<InsertionBean> insertionBeanList = new ArrayList<InsertionBean>();
InsertionBean insertionBean1 = new InsertionBean();
insertionBean1.setId(1);
insertionBean1.setPrice(100000);
insertionBean1.setTitle("titolo 1");
InsertionBean insertionBean2 = new InsertionBean();
insertionBean1.setImageName("7_1.jpg");
insertionBean2.setId(2);
insertionBean2.setPrice(200000);
insertionBean2.setTitle("titolo 2");
insertionBean2.setImageName("6_1.jpg");
InsertionBean insertionBean3 = new InsertionBean();
insertionBean3.setId(3);
insertionBean3.setPrice(300000);
insertionBean3.setTitle("titolo 3");
insertionBean3.setImageName("5_1.jpg");
insertionBeanList.add(insertionBean1);
insertionBeanList.add(insertionBean2);
insertionBeanList.add(insertionBean3);
if (insertionBeanList != null && !insertionBeanList.isEmpty()) {
/** ordino per prezzo crescente */
Collections.sort(insertionBeanList,
new ComparatorInsertionPriceHighToLow());
System.err.println("crescente ins1 price: "
+ ((InsertionBean) insertionBeanList.get(0)).getPrice());
System.err.println("crescente ins2 price: "
+ ((InsertionBean) insertionBeanList.get(1)).getPrice());
System.err.println("crescente ins3 price: "
+ ((InsertionBean) insertionBeanList.get(2)).getPrice());
/** ordino per prezzo decrescente */
Collections.sort(insertionBeanList,
new ComparatorInsertionPriceLowToHigh());
System.err.println("decrescente ins1 price: "
+ ((InsertionBean) insertionBeanList.get(0)).getPrice());
System.err.println("decrescente ins2 price: "
+ ((InsertionBean) insertionBeanList.get(1)).getPrice());
System.err.println("decrescente ins3 price: "
+ ((InsertionBean) insertionBeanList.get(2)).getPrice());
}
}
}
package it.ordinare.liste.test;
import java.util.Comparator;
public class ComparatorInsertionPriceHighToLow implements Comparator<InsertionBean> {
@Override
public int compare(InsertionBean arg0, InsertionBean arg1) {
int price0 = arg0.getPrice();
int price1 = arg1.getPrice();
// System.out.println("price0: "+price0);
// System.out.println("price1: "+price1);
int result = (price0 > price1) ? 0 : 1;
// System.out.println("HighToLow result: "+result);
return result;
}
}
package it.ordinare.liste.test;
import java.util.Comparator;
public class ComparatorInsertionPriceLowToHigh implements Comparator<InsertionBean> {
@Override
public int compare(InsertionBean arg0, InsertionBean arg1) {
int price0 = arg0.getPrice();
int price1 = arg1.getPrice();
// System.out.println("price0: "+price0);
// System.out.println("price1: "+price1);
int result = (price0 < price1) ? 0 : 1;
// System.out.println("lowToHight result: "+result);
return result;
}
}
Il risultato è questo:
crescente ins1 price: 100000
crescente ins2 price: 200000
crescente ins3 price: 300000
decrescente ins1 price: 100000
decrescente ins2 price: 200000
decrescente ins3 price: 300000
Mentre io volevo questo:
crescente ins1 price: 100000
crescente ins2 price: 200000
crescente ins3 price: 300000
decrescente ins1 price: 300000
decrescente ins2 price: 200000
decrescente ins3 price: 100000
Sapete dirmi dove sbaglio?
grazie