Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    883

    come ordinare una lista di oggetti

    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<InsertionBeaninsertionBeanList = 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: "
                        
    + ((InsertionBeaninsertionBeanList.get(0)).getPrice());
                
    System.err.println("crescente ins2 price: "
                        
    + ((InsertionBeaninsertionBeanList.get(1)).getPrice());
                
    System.err.println("crescente ins3 price: "
                        
    + ((InsertionBeaninsertionBeanList.get(2)).getPrice());
                
                
    /** ordino per prezzo decrescente */
                
    Collections.sort(insertionBeanList,
                        new 
    ComparatorInsertionPriceLowToHigh());
                
    System.err.println("decrescente ins1 price: "
                        
    + ((InsertionBeaninsertionBeanList.get(0)).getPrice());
                
    System.err.println("decrescente ins2 price: "
                        
    + ((InsertionBeaninsertionBeanList.get(1)).getPrice());
                
    System.err.println("decrescente ins3 price: "
                        
    + ((InsertionBeaninsertionBeanList.get(2)).getPrice());


            }
        }
    }


    package it.ordinare.liste.test;




    import java.util.Comparator;


    public class 
    ComparatorInsertionPriceHighToLow implements Comparator<InsertionBean> {


        @
    Override
        
    public int compare(InsertionBean arg0InsertionBean arg1) {
            
    int price0 arg0.getPrice();
            
    int price1 arg1.getPrice();
    //        System.out.println("price0: "+price0);
    //        System.out.println("price1: "+price1);
            
    int result = (price0 price1) ? 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 arg0InsertionBean arg1) {
            
    int price0 arg0.getPrice();
            
    int price1 arg1.getPrice();
    //        System.out.println("price0: "+price0);
    //        System.out.println("price1: "+price1);
            
    int result = (price0 price1) ? 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

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Passando A e B, il contratto di compare è il seguente:

    A > B : ritorna > 0
    A = B : ritorna 0
    A < B : ritorna < 0

    (per ordine crescente, il contrario per decrescente)

    Rivedi il valore di ritorno
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    883
    Quote Originariamente inviata da Alex'87 Visualizza il messaggio
    Passando A e B, il contratto di compare è il seguente:

    A > B : ritorna > 0
    A = B : ritorna 0
    A < B : ritorna < 0

    (per ordine crescente, il contrario per decrescente)

    Rivedi il valore di ritorno
    Non ho capito come devo modificare il codice

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Quote Originariamente inviata da abcd1000 Visualizza il messaggio
    Non ho capito come devo modificare il codice
    Vedi http://forum.html.it/forum/showthrea...1#post13900549
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.