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

    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,840
    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
    851
    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
    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
    AndreaSenior Java developerSCJP 5 (91%) – SCWCD 5 (94%)
    Il mio nuovo sito-blog italiano sulla programmazione: andbin.it

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 © 2019 vBulletin Solutions, Inc. All rights reserved.