2013-06-15 19 views

Odpowiedz

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

Dlaczego zdecydowałeś się ograniczyć przydatność metod do ArrayList zamiast do bardziej ogólnej listy? – Hiro2k

+2

Metoda odczytuje AnalyseArray, więc od tego czasu wziąłby coś, co wewnętrznie używa tablicy. Być może to, co robi w metodzie, jest wrażliwe na metody O (get), więc przekazanie listy powiązań byłoby złe. –

2

zdefiniować go jako

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

Odpowiedź jest już pisał jednak pamiętać, że to minie ArrayList przez odniesienie. Więc jeśli wprowadzisz jakiekolwiek zmiany na liście w funkcji, wpłynie to również na oryginalną listę.

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

nazwać to tak:

x=AnalyseArray(list); 

lub przekazać kopię ArrayList:

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

tylko ze względu na kompletność ... napisz też odpowiedź ...... – pinkpanther

0

To zależy od tego jak i gdzie ogłosił swoją listę tablicy. Jeśli jest to instancja zmienna w tej samej klasie, co metoda AnalyseArray(), nie musisz jej przekazywać dalej. Metoda będzie znała listę i możesz po prostu użyć A w dowolnym celu.

Jeśli się nie znają, np. beeing zmiennej lokalnej lub zadeklarowana w innej klasy, określić, czy AnalyseArray() metoda wymaga parametr ArrayList

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

a następnie pracować z thelist wewnątrz tej metody. Ale nie zapomnij go przekazać podczas wywoływania metody. AnalyseArray(A);

PS: Niektóre mogą być pomocne informacje dla Variables i parameters.

Powiązane problemy