Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di Donovant
    Registrato dal
    Sep 2005
    residenza
    London
    Messaggi
    1,329

    Ordinamento matrice nx2

    Salve, vorrei sapere come fare per ordinare una matrice M[n][2];
    Stavo cercando di farlo con una PriorityQueue, ma poi mi sono confuso cercando di implementare l'interfaccia COMPARATOR...... non so come gestile l'implementazione del metodo public int compare(obj o1, obj o2){ ... }.
    L'ordinamento deve essere fatto rispetto al secondo valore di ogni riga quindi ad esempio M[x][1], in cui nel primo valore ho impostato un numero ID, nel secondo un tempo, quindi vorrei comparisse ID con il tempo più piccolo nella posizione M[0][1] e quello con il tempo più alto in M[n-1][1];

    Help me, thanks!
    Beati gli smemorati, perchè avranno la meglio anche sui loro errori...

    My gallery: http://donovant.deviantart.com/gallery/

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Ordinamento matrice nx2

    Originariamente inviato da Donovant
    L'ordinamento deve essere fatto rispetto al secondo valore di ogni riga quindi ad esempio M[x][1]
    Innanzitutto non serve PriorityQueue (nemmeno altre collezioni)! Poi comunque dovresti precisare di che tipo è l'array, int[][]? oppure Integer[][]? O Object[][] (e magari in ogni riga ci sono dati differenti es. Integer e Long)?

    Comunque basta solo usare sort() di Arrays specificando un apposito Comparator. Per essere più chiaro, ecco l'esempio supponendo che l'array sia int[][].

    codice:
    import java.util.*;
    
    public class Prova {
        public static void main(String[] args) {
            int[][] dati = { { 1, 5 }, { 3, 10 }, { 2, 7 }, { 7, 2 } };
    
            Arrays.sort(dati, new MatrixColumn1Comparator());
    
            for (int[] d : dati) {
                System.out.println(d[0] + " - " + d[1]);
            }
        }
    }
    
    
    class MatrixColumn1Comparator implements Comparator<int[]> {
        public int compare(int[] a, int[] b) {
            if (a[1] > b[1]) {
                return +1;
            } else if (a[1] < b[1]) {
                return -1;
            } else {
                return 0;
            }
        }
    }
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it L'avatar di Donovant
    Registrato dal
    Sep 2005
    residenza
    London
    Messaggi
    1,329
    Grazie mille....si l'array è di interi, solo una cosa non ho capito.
    Se io ho un array di array, come da problema come mai poi nel metodo "compare" si passa al metodo 2 semplici vettori (int[] a, int[] b)???
    Beati gli smemorati, perchè avranno la meglio anche sui loro errori...

    My gallery: http://donovant.deviantart.com/gallery/

  4. #4
    Utente di HTML.it L'avatar di Donovant
    Registrato dal
    Sep 2005
    residenza
    London
    Messaggi
    1,329
    Ok ok capito.....ora ho capito, mi sono confuso...praticamente io prendevo come riferimento tutta la "collezione" [][], mentre l'ordinamento viene fatto rispetto a quello che la collezione contiene, ovvero un "array".

    Grazie mille.
    Beati gli smemorati, perchè avranno la meglio anche sui loro errori...

    My gallery: http://donovant.deviantart.com/gallery/

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Donovant
    mentre l'ordinamento viene fatto rispetto a quello che la collezione contiene, ovvero un "array".
    Esatto! Se un array è int[] gli elementi sono int ..... se un array è int[][] gli elementi sono ... appunto int[]
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava 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 © 2025 vBulletin Solutions, Inc. All rights reserved.