Metodo java per l'ordinamento di un array di stringhe

di il
3 risposte

Metodo java per l'ordinamento di un array di stringhe

Ciao a tutti sono nuovo del forum,
volevo chiedere se qualcuno sapeva dirmi se esistesse un metodo in java per l'ordinamento alfabetico di un array monodimensionale di stringhe
io per ora ho usato il selection sort con il metodo .compareTo() ma da quanto ho capito le mette in ordine lessicografico.

3 Risposte

  • Re: Metodo java per l'ordinamento di un array di stringhe

    manu20 ha scritto:


    volevo chiedere se qualcuno sapeva dirmi se esistesse un metodo in java per l'ordinamento alfabetico di un array monodimensionale di stringhe
    io per ora ho usato il selection sort con il metodo .compareTo() ma da quanto ho capito le mette in ordine lessicografico.
    Precisa cosa (tu) intendi per "alfabetico" .... perché ordine lessicografico vuol dire sì (anche) alfabetico ma nel senso generale dello standard Unicode.
    Se prendi una qualunque tabella ASCII (senza voler scomodare l'intero Unicode) reperibile in rete ... ecco, l'ordine è in base ai codici ASCII.
    Quindi es.
    A < a
    0 < A
    [ < ]
    z < {


    P.S. se non devi implementare tu un algoritmo di ordinamento (tipicamente si fa per motivi "didattici") l'algoritmo di ordinamento per un array di oggetti esiste già nel framework:

    Nella classe java.util.Arrays ci sono i metodi:

    public static void sort(Object[] a)
    public static <T> void sort(T[] a, Comparator<? super T> c)

    Il primo usa il criterio di ordinamento "naturale" (Comparable), il secondo usa un criterio di ordinamento specifico (Comparator). Ma ci sono altre varianti di quei sort.
  • Re: Metodo java per l'ordinamento di un array di stringhe

    Grazie per la risposta...
    credo allora vada bene cosi il mio programma.
    comunque si lo devo implementare io un algoritmo di ordinamento appunto come hai detto te per motivi didattici..
    ti ringrazio ancora perchè mi sei stato molto di aiuto!
  • Re: Metodo java per l'ordinamento di un array di stringhe

    Se era possibile volevo chiedere un altro aiuto...
    
    	case 7:  categoria=JOptionPane.showInputDialog("digita una determinata categoria di prodotti i cui nomi con la categoria indicata usciranno in ordine alfabetico");					
    										 for(i=0;i<dimLogica;i++)
    										 {
    											 if(categoria.equals(categorie[i]))
    											 {
    												 nomiProd[i]=nomi[i];												 
    											 }
    										 }
    										    for( i=0;i<dimLogica-1;i++) 
    											{         
    											   posMin2 = i;
    											   for (j=i+1;j<dimLogica;j++) 
    											   {
    												   if (nomiProd[j].compareTo(nomiProd[posMin2])<0) 
    												   {
    													  posMin2 = j;
    												   }
    											   }
    											   if (posMin2 != i) 
    											   {
    												   temp=nomiProd[i];
    												   nomiProd[i]=nomiProd[posMin2];
    												   nomiProd[posMin2]=temp;
    												   
    											   }
    											}
    											 msg8="";
    											//for per la crazione della stringa con il vettori dei nomi ordinati
    											 for(i=0;i<dimLogica;i++)
    											 {
    												 
    												 msg8+=nomiProd[i]+"\n";
    											 }
    
    praticamente questa parte di progetto dove devo ordinare appunto il nome dei prodotti con la stessa categoria mi funziona solo se i prodotti che ho hanno tutti la stessa castegoria...
    se non hanno la stessa categoria mi va in NullPointerException
    ad esempio se ho tre prodotti tutti con la stessa categoria mi stampa l'ordine alfabetico con i nomi
    ma se ho tre prodotti di cui solo 2 hanno la stessa categoria non funziona.
Devi accedere o registrarti per scrivere nel forum
3 risposte