Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 19
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2002
    Messaggi
    141

    [JAVA] Ordinare un hashtable

    Ciao a tutti,
    come si fà ad ordinare un hashtable?
    oppure posso ordinare un' array?

    Io ho un'hashtable che utilizzo per accumulare valori a chiave identica, poi mi scorro hashtable con un enumeration e carico un String [][].


    public String[][][] CreaMenu(ResultSet records){
    .....

    public Hashtable<String,String> ht1 = new Hashtable<String,String>();
    public Hashtable<String,String> ht2 = new Hashtable<String,String>();
    public Hashtable<String,String> ht3 = new Hashtable<String,String>();
    ...
    ...

    righeMenu = new String[ht1.size()][ht1.size()][ht1.size()];
    int a=0;
    Enumeration en = ht1.keys();
    while (en.hasMoreElements()) {
    key1 = (String)en.nextElement();
    value1 = (String)ht1.get(key1);
    value2 = (String)ht2.get(key1);
    value3 = (String)ht3.get(key1);
    righeMenu[a][0][0]=value3;
    righeMenu[a][1][0]=value1;
    righeMenu[a][1][1]=value2;
    a++;
    }
    return righeMenu;
    }

  2. #2
    Intanto inserisci il codice formattato, puoi inserire tutto il codice per esteso cosi' risulta piu' leggibile.
    Se ci fai caso c'e' un pulsante con su scritto CODE a da li inserisci il codice, cosi come lo hai postato anche chi
    e' molto pratico gli passa la voglia di leggerlo
    Dopodiche' cerchero' di aiutarti, nelle mie misere capacita'
    Nulla, ma e' sempre qualcosa.

  3. #3
    Bhe intanto ti posso dire che avendo usato i Generics per dichiarare HashTable non hai bisogno del casting per estrarre i valori, altrimenti vanifichi tale costrutto veramente straordinario.
    Nulla, ma e' sempre qualcosa.

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2002
    Messaggi
    141
    ok per il costrutto, d'altra parte è la prima volta che scrivo in java.
    Per il codice non ho capito come fare con il pulsante CODE, quando clicco quel pulsante mi chiede di inserire il testo, e ho una riga, il mio codice è molto lungo.

  5. #5
    Utente di HTML.it L'avatar di bako
    Registrato dal
    Feb 2004
    Messaggi
    1,797
    Originariamente inviato da vgiani
    ok per il costrutto, d'altra parte è la prima volta che scrivo in java.
    Per il codice non ho capito come fare con il pulsante CODE, quando clicco quel pulsante mi chiede di inserire il testo, e ho una riga, il mio codice è molto lungo.
    ù
    scrivi a poi quando vedi i tag nella casella di testo, c scrivi dentro

  6. #6
    Utente di HTML.it
    Registrato dal
    Mar 2002
    Messaggi
    141
    codice:
    public class GestioneMenu {
        public Hashtable<String,String> ht1 = new Hashtable<String,String>();
        public Hashtable<String,String> ht2 = new Hashtable<String,String>();
        public Hashtable<String,String> ht3 = new Hashtable<String,String>();
        public String comodo;
        public int var1=0;
        public int var2=0;
        public int progre=0;
        public String key1;
        public String key2;
        public String key3;
        public String righeMenu[][][];
        public String value1;
        public String value2;
        public String value3;
        public int codice4;
        public int riga4;
        public String descrizio4;
        public int codice3;
        public int riga3;
        public String descrizio3;
        public int codice2;
        public int riga2;
        public String descrizio2;
        public int codice1;
        public int riga1;
        public String descrizio1;
        public int codice0;
        public int riga0;
        public String descrizio0;
        public int interrogazione;
        public String comodokey;
    
        public GestioneMenu()
                {
                var1=0;
                var2=0;
                ht1.clear();
                ht2.clear();
                ht3.clear();
                }
        public String[][][] CreaMenu(ResultSet records){
       	    try {
                  while (records.next()) {
                        codice4=records.getInt("COD_MENU_L4");
                        riga4=records.getInt("RIGA_MENU_L4");
                        descrizio4=records.getString("DESCRIZIONE_L4");
                        codice3=records.getInt("COD_MENU_L3");
                        riga3=records.getInt("RIGA_MENU_L3");
                        descrizio3=records.getString("DESCRIZIONE_L3");
                        codice2=records.getInt("COD_MENU_L2");
                        riga2=records.getInt("RIGA_MENU_L2");
                        descrizio2=records.getString("DESCRIZIONE_L2");
                        codice1=records.getInt("COD_MENU_L1");
                        riga1=records.getInt("RIGA_MENU_L1");
                        descrizio1=records.getString("DESCRIZIONE_L1");
                        codice0=records.getInt("COD_MENU_L0");
                        riga0=records.getInt("RIGA_MENU_L0");
                        descrizio0=records.getString("DESCRIZIONE_L0");
                        interrogazione=records.getInt("INTER_INTERROGAZ");
    	              if (codice4 != 0) {
                         AggiungiCod4(codice4,riga4,descrizio4,codice3,riga3,descrizio3,codice2,riga2,descrizio2,codice1,riga1,descrizio1,codice0,riga0,descrizio0,interrogazione);
    	              }
    	              if ((codice3 != 0) && (codice4 == 0)) {
    	                 AggiungiCod3(codice3,riga3,descrizio3,codice2,riga2,descrizio2,codice1,riga1,descrizio1,codice0,riga0,descrizio0,interrogazione);
    	              }
    	              if (codice2 != 0 && codice3 == 0 && codice4 == 0) {
    	                 AggiungiCod2(codice2,riga2,descrizio2,codice1,riga1,descrizio1,codice0,riga0,descrizio0,interrogazione);
    	              }
    	              if (codice1 != 0 && codice2 == 0 && codice3 == 0 && codice4 == 0) {
    	                 AggiungiCod1(codice1,riga1,descrizio1,codice0,riga0,descrizio0,interrogazione);
    	              }
    	              if (codice0 != 0 && codice1 == 0 && codice2 == 0 && codice3 == 0 && codice4 == 0) {
    	                 AggiungiCod0(codice0,riga0,descrizio0,interrogazione);
    	              }
                  }
    	      }
                  catch( Exception e )
    	      {
                      System.err.println("Eccezione if null: " + e.getMessage());
                  }
            righeMenu = new String[ht1.size()][ht1.size()][ht1.size()];
            int a=0;
           	Enumeration en = ht1.keys();
    		while (en.hasMoreElements()) {
    		  key1 = (String)en.nextElement();
    		  value1 = (String)ht1.get(key1);
    		  value2 = (String)ht2.get(key1);
    		  value3 = (String)ht3.get(key1);
    		  righeMenu[a][0][0]=value3;
    		  righeMenu[a][1][0]=value1;
    		  righeMenu[a][1][1]=value2;
    		  a++;
    		}
    		return righeMenu;
          }    
          
    	public void AggiungiCod4(int cod4,int riga4,String descr4,int cod3,int riga3,String descr3,int cod2,int riga2,String descr2,int cod1,int riga1,String descr1,int cod0,int riga0,String descr0,int interroga){
    		key1 = String.valueOf(cod4) + "|" + String.valueOf(riga4) + "|" + descr4;
    		key2 = key1;
    		key3 = key1;
    		if (ht1.containsKey(key1) == true){
    		try{
    		 	comodo = (String)ht2.get(key2);
    		 	comodo += ","+String.valueOf(interroga);
    		 	ht2.put(key2,comodo);
    		 	comodokey=(String)ht3.get(key2);
    			key1 = String.valueOf(cod3) + "|" + String.valueOf(riga3) + "|" + descr3;
    			key2 = key1;
    			key3 = key1;
    			if (ht1.containsKey(key1)==true){
    		 	comodo = (String)ht2.get(key2);
    		 	comodo += ","+String.valueOf(interroga);
    		 	ht2.put(key2,comodo);
    		 	comodokey=(String)ht3.get(key2);
    		 	}else{
    		 		ht1.put(key1,descr3);
    		 		ht2.put(key2,String.valueOf(interroga));
    		 		progre++;
    		 		comodo = String.valueOf(progre) + "|" + String.valueOf(comodokey.substring(0,comodokey.indexOf("|")));
    		 		ht3.put(key3,comodo);
    		 	}
    			key1 = String.valueOf(cod2) + "|" + String.valueOf(riga2) + "|" + descr2;
    			key2 = key1;
    			key3 = key1;
    			if (ht1.containsKey(key1)==true){
    		 	comodo = (String)ht2.get(key2);
    		 	comodo += ","+String.valueOf(interroga);
    		 	ht2.put(key2,comodo);
    		 	comodokey=(String)ht3.get(key2);
    		 	}else{
    		 		ht1.put(key1,descr2);
    		 		ht2.put(key2,String.valueOf(interroga));
    		 		progre++;
    		 		comodo = String.valueOf(progre) + "|" + String.valueOf(comodokey.substring(0,comodokey.indexOf("|")));
    		 		ht3.put(key3,comodo);
    		 	}
    			key1 = String.valueOf(cod1) + "|" + String.valueOf(riga1) + "|" + descr1;
    			key2 = key1;
    			key3 = key1;
    			if (ht1.containsKey(key1)==true){
    		 	comodo = (String)ht2.get(key2);
    		 	comodo += ","+String.valueOf(interroga);
    		 	ht2.put(key2,comodo);
    		 	comodokey=(String)ht3.get(key2);
    		 	}else{
    		 		ht1.put(key1,descr1);
    		 		ht2.put(key2,String.valueOf(interroga));
    		 		progre++;
    		 		comodo = String.valueOf(progre) + "|" + String.valueOf(comodokey.substring(0,comodokey.indexOf("|")));
    		 		ht3.put(key3,comodo);
    		 	}
    			key1 = String.valueOf(cod0) + "|" + String.valueOf(riga0) + "|" + descr0;
    			key2 = key1;
    			key3 = key1;
    			if (ht1.containsKey(key1)==true){
    		 	comodo = (String)ht2.get(key2);
    		 	comodo += ","+String.valueOf(interroga);
    		 	ht2.put(key2,comodo);
    		 	comodokey=(String)ht3.get(key2);
    		 	}else{
    		 		ht1.put(key1,descr0);
    		 		ht2.put(key2,String.valueOf(interroga));
    		 		progre++;
    		 		comodo = String.valueOf(progre) + "|" + String.valueOf(comodokey.substring(0,comodokey.indexOf("|")));
    		 		ht3.put(key3,comodo);
    		 	}
    		 	}
    		catch (NullPointerException e) {  
    			System.err.println("Eccezione HT4m: " + e.getMessage()); 	
    			}
     		}else{
            try{     
                progre++; 
    	 		ht1.put(key1,descr4);
    	 		ht2.put(key2,String.valueOf(interroga));
    	 		var1=progre;
    	 		comodo = String.valueOf(var1) + "|0";
    	 		ht3.put(key3,comodo);
    			key1 = String.valueOf(cod3) + "|" + String.valueOf(riga3) + "|" + descr3;
    			key2 = key1;
    			key3 = key1;
    	 		ht1.put(key1,descr3);
    	 		ht2.put(key2,String.valueOf(interroga));
    	 		progre++;
    	 		comodo = String.valueOf(progre) + "|" + String.valueOf(var1);
    	 		ht3.put(key3,comodo);
    	 		var1=progre;
    			key1 = String.valueOf(cod2) + "|" + String.valueOf(riga2) + "|" + descr2;
    			key2 = key1;
    			key3 = key1;
    	 		ht1.put(key1,descr2);
    	 		ht2.put(key2,String.valueOf(interroga));
    	 		progre++;
    	 		comodo = String.valueOf(progre) + "|" + String.valueOf(var1);
    	 		ht3.put(key3,comodo);
    	 		var1=progre;
    			key1 = String.valueOf(cod1) + "|" + String.valueOf(riga1) + "|" + descr1;
    			key2 = key1;
    			key3 = key1;
    	 		ht1.put(key1,descr1);
    	 		ht2.put(key2,String.valueOf(interroga));
    	 		progre++;
    	 		comodo = String.valueOf(progre) + "|" + String.valueOf(var1);
    	 		ht3.put(key3,comodo);
    	 		var1=progre;
    			key1 = String.valueOf(cod0) + "|" + String.valueOf(riga0) + "|" + descr0;
    			key2 = key1;
    			key3 = key1;
    	 		ht1.put(key1,descr0);
    	 		ht2.put(key2,String.valueOf(interroga));
    	 		progre++;
    	 		comodo = String.valueOf(progre) + "|" + String.valueOf(var1);
    	 		ht3.put(key3,comodo);
    	 		}
    	 	catch (NullPointerException e){
    	 		System.err.println("Eccezione HT4i: " + e.getMessage()); 	
         	 	}	
     		}
    	}
    ho messo solo un pezzo, gli altri metodi sono simili.

  7. #7
    Bhe in effetti mancano dei metodi, ma accidenti cosa dovrebbe fare questo mirabolante codice!!!
    Nulla, ma e' sempre qualcosa.

  8. #8
    Cmq c'e' il metodo statico Collection.sort() che ha diverse versioni in overloading, puoi passare come argomento sia un Collection che un array, accetta anche un secondo argomento di tipo Comparator, ovvero una classe che implementa l'interfaccia Comparator dove stabilisci il sistema di confronto.
    Per quanto riguarda il codice devo ammettere che di pazienza ne hai avuto per scriverlo, intuisco anche che tu lo abbia scritto tutto a mano, senza nessun IDE.
    Nulla, ma e' sempre qualcosa.

  9. #9
    Utente di HTML.it
    Registrato dal
    Mar 2002
    Messaggi
    141
    Grazie, cosa vuol dire che passo il mio array al Collection.sort e mi ritrovo il mio array ordinato? Nel javadoc mi dice che vuole una lista, e nel mio caso il mio array è "righeMenu" che trovi dove c'è l'Enumeration, cosa faccio Collections.sort(righemenu[][][]);
    Per scrivere il codice uso UltraEdit, non saprei cosa scaricare per poter scrivere in java.
    E' così schifoso da vedere?

    Ciao

  10. #10
    Allora io ti consiglio di usare Net Beans lo puoi scaricare dal sito della Sun, questo IDE usa il completamento automatico e ti suggerisce tutti i metodi all'interno di una classe, l'identazione automatica, l'override, l'import automatico etc etc.
    E' chiarao che se sei all'inizio come me non devi usare i form, ovvero codice scritto automaticamente e che nel frattempo ti da la visuale del progetto.
    Prova ad istallarlo, trovi anche le istruzioni per istallarlo, basta leggere attentamente. Tentare non nuoce e mentre fai nuova esperienza.
    Riguardo l'ordinamento di un arrai a 3 dimensioni in effetti la cosa si complica, devi intervenire manualmente inserendo nel metodo Collection.sort() sia il tuo array che un oggetto che implementa l'interfaccia comparator, dove all'interno di tale classe specifichi il tipo di ordinamento.
    Qui c'e' un esempio:
    codice:
    import java.util.*;
    
    public class Sort3 {
    
       public void printElements()
       {
          List list = new ArrayList();
    
          list.add( new Time2(  6, 24, 34 ) );
          list.add( new Time2( 18, 14, 05 ) );
          list.add( new Time2( 12, 07, 58 ) );
          list.add( new Time2(  6, 14, 22 ) );
          list.add( new Time2(  8, 05, 00 ) );
          
          // output List elements
          System.out.println( "Unsorted array elements:\n" + list );
    
          // sort in order using a comparator
          Collections.sort( list, new TimeComparator() ); 
    
          // output List elements
          System.out.println( "Sorted list elements:\n" + list );
       }
     
       public static void main( String args[] )
       {
          new Sort3().printElements();
       } 
       
       private class TimeComparator implements Comparator {
          int hourCompare, minuteCompare, secondCompare;
          Time2 time1, time2;
          
          public int compare( Object object1, Object object2 )
          {
             // cast the objects
             time1 = ( Time2 ) object1;
             time2 = ( Time2 ) object2;
             
             hourCompare = new Integer( time1.getHour() ).compareTo( 
                           new Integer( time2.getHour() ) );
             
             // test the hour first
             if ( hourCompare != 0 )
                return hourCompare;
             
             minuteCompare = new Integer( time1.getMinute() ).compareTo( 
                             new Integer( time2.getMinute() ) );
             
             // then test the minute
             if ( minuteCompare != 0 )
                return minuteCompare;
             
             secondCompare = new Integer( time1.getSecond() ).compareTo( 
                             new Integer( time2.getSecond() ) );
    
             return secondCompare; // return result of comparing seconds      
          }
          
       } // end class TimeComparator
                                              
    } // end class Sort2
    Nulla, ma e' sempre qualcosa.

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.