Problemi coi generics

di il
3 risposte

Problemi coi generics

Ciao a tutti, premetto che so bene di aver scritto una marea di sciocchezze ma ho cominciato da relativamente poco a interessarmi ala programmazione.
Sto studiando i generics e mi sono parecchio antipatici, sto provando a fare un algoritmo di InsertionSort utilizzandoli ma ho particolari problemi col main, vi incollo il codice che ho scritto:


public class InsertionSort<T extends Comparable<T>> implements Sorter<T> 
{

	
	public InsertionSort() {
		
	}

	@Override
	public int sort(T[] lista) {
		if(lista == null || lista.length == 0)
		{	
			System.out.println("lista null o vuota : impossibile eseguire il sort");
			return -1;
		}
			
		for (int i=0; i<lista.length; i++) {
			
			T secondo= lista[i];
			
			for(int j=i-1; (j >= 0) && (j<i); j--)  {
				T primo = lista[j];
				T temp=primo;
				 //se secondo è maggiore di primo, scambio
				   if(primo.compareTo(secondo) > 0) //tutte e 2 devono essere dello stesso tipo
					   temp=primo;
				   	   primo = secondo;
				   	   secondo=temp;
				   	   
				   		
				   		
				
			}
		}
		return 0;
	}


}

package org.svalvolard.generics;



public class MainClass  {

	public static void main (String[] args) {
		
		Integer[] ordina = new Integer[3];
		ordina[0] = 12;
		ordina[1] = 4;

		
		InsertionSort<Integer> inserimento = new InsertionSort<Integer>();
		inserimento.sort(ordina);
		System.out.println(ordina);
	}
}
Siate clementi

3 Risposte

  • Re: Problemi coi generics

    Non ho letto tutto il codice ... quale è il dubbio/problema?
  • Re: Problemi coi generics

    Mi scuso, non ho spiegato il problema, vorrei che data una lista di generics mi venga restituita la lista ordinata con l'insertionSort
  • Re: Problemi coi generics

    Samus ha scritto:


    vorrei che data una lista di generics mi venga restituita la lista ordinata con l'insertionSort
    Lista intendi "collezione" ... o array? Al momento il tuo metodo riceve T[] e restituisce int.
    Potrebbe ricevere List<T> e restituire List<T> (una nuova lista, senza toccare quella in ingresso).

    Quindi: premesso che è perfettamente lecito scrivere

    public List<T> sort(List<T> lista) { ...... }

    Quale è il tuo dubbio?


    P.S. non va molto bene fare un println nel sort per segnalare qualcosa.
Devi accedere o registrarti per scrivere nel forum
3 risposte