Stampa inversa di un array

-2

che è l'approccio più efficiente per stampare il retro di un array di numeri interi in Java:

Primo approccio:

int length=array.length;
for(int j=length-1;j>=0;j--)
{
   System.out.print(arr[j]);
}

Secondo approccio:

List<Integer> listInteger = Arrays.asList(array);
Collections.reverse(listInteger);
int length=listInteger.size();
for(int j=0;j<length;j++)
{
      System.out.print(listInteger.get(j));
}

Qual è l'approccio migliore?

    
posta user1369975 21.08.2016 - 07:10
fonte

1 risposta

1

La cosa più efficace e ciò che è meglio di solito non sono la stessa cosa.

La prima domanda che dovresti fare in questa situazione è come hai finito per attraversare la struttura dei dati al contrario. Perché non può essere costruito nell'ordine corretto all'inizio?

È molto più semplice correggere il codice cattivo piuttosto che lavorare con strutture di dati scadenti. Non accettare questa situazione se non è necessario.

Se necessario, la prossima domanda è: vuoi davvero accoppiare il codice di inversione con il codice di stampa? Il secondo approccio ha molto più senso quando li disaccoppia.

List<Integer> listInteger = Arrays.asList(array);
Collections.reverse(listInteger);
media.display(listInteger);

display può inviarlo a system out, o caricarlo in una GUI, o stamparlo su carta, o trasformarlo in una parte di una pagina web, o ...

Il primo approccio funziona quando vuoi solo un modo veloce e sporco codificato per ottenerlo sullo schermo.

Per quanto è più "efficiente", il primo riutilizza la memoria esistente mentre il secondo ne fa una copia. Se la matrice è abbastanza grande da farla valere, allora va bene. Ma perché diavolo l'hai creato all'indietro al primo posto?

Il primo rende felice il computer e mi lamento per la perdita di flessibilità. La scelta di chi rendere felice dipende da te.

Ricorda che la flessibilità prematura (vedi BDUF vs YAGNI) è quasi pessima quanto l'ottimizzazione prematura. Quindi qualunque cosa tu faccia, ti rendi conto che hai già passato troppo tempo a pensarci.

Inoltre, risulta che esiste un modo migliore per implementare la seconda opzione. È dettagliato qui .

    
risposta data 21.08.2016 - 17:23
fonte

Leggi altre domande sui tag