2013-06-15 21 views

risposta

16
public void AnalyseArray(ArrayList<Integer> array) { 
    // Do something 
} 
... 
ArrayList<Integer> A = new ArrayList<Integer>(); 
AnalyseArray(A); 
+1

Perché hai scelto di limitare l'utilità dei metodi con un ArrayList invece dell'elenco più generale? – Hiro2k

+2

Il metodo legge ReadArray, quindi farebbe in modo da prendere qualcosa che utilizza internamente un array. Forse ciò che sta facendo all'interno del metodo è sensibile ai metodi O di get(), quindi passare una LinkedList sarebbe negativo. –

2

definirlo come

<return type> AnalyzeArray(ArrayList<Integer> list) { 
5

La risposta è già postato, ma si noti che questo passerà l'ArrayList per riferimento. Quindi, se apporti delle modifiche alla lista nella funzione, anche questa verrà modificata nell'elenco originale.

<access-modfier> <returnType> AnalyseArray(ArrayList<Integer> list) 
{ 
//analyse the list 
//return value 
} 

chiamata in questo modo:

x=AnalyseArray(list); 

o passare una copia di ArrayList:

x=AnalyseArray(list.clone()); 
+1

solo per completezza ... scrivi anche la risposta ...... – pinkpanther

0

Dipende da come e dove avete dichiarato la vostra lista di array. Se si tratta di una variabile di istanza nella stessa classe come il metodo AnalyzeArray(), non è necessario passarla. Il metodo conoscerà l'elenco e puoi semplicemente utilizzare l'A in qualsiasi scopo tu abbia bisogno.

Se non si conoscono, ad es. beeing una variabile locale o dichiarato in una classe diversa, definire che il vostro AnalyseArray() metodo ha bisogno di un parametro ArrayList

public void AnalyseArray(ArrayList<Integer> theList){} 

e poi lavorare con theList dentro quel metodo. Ma non dimenticare di passarlo effettivamente quando chiami il metodo. AnalyseArray(A);

PS: alcune informazioni utili a Variables e parameters.

Problemi correlati