Tytuł może nie do końca odzwierciedla temat o który chciałbym zapytać. Dla przykładu wkleję na początek prostą funkcję:
public static <T> boolean isIn(T t, T... ts) {
if (t == null) {
return false;
}
for (T tt : ts) {
if (t.equals(tt)) {
return true;
}
}
return false;
}
Funkcja sprawdza czy element t jest jednym ze zbioru ts (przez equals)
i teraz w zależnosci od wywołania:
isIn(10, 2,3,4,10); //zwraca true
int i[] = {2,3,4,10};
isIn(10, i); //zwraca false (bo nie iteruje po elementach tablicy - dlaczego)
//ale takie coś (niby tez tablica) daje true
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(2);
list.add(3);
list.add(4);
list.add(10);
isIn(10, list.toArray())
I stąd pytania:
- jak to się fachowo nazywa, w sensie te 3 kropki - "..."
- dlaczego nie iteruje po elementach jak przekazemy tablice?
- dlaczego list.toArray tworzy tabice po ktorej iteruje a po zwyklej nie?