2013-08-06 13 views
8

Jestem ciekawy, dlaczego tablice są używane, gdy można zamiast tego użyć ArrayLists? Czy nie zawsze lepiej byłoby użyć ArrayList?Dlaczego ważne jest, aby dowiedzieć się więcej o tablicach, gdy mamy ArrayLists?

+2

Jeśli jedynym językiem, który planujesz użyć, jest java, to nie martw się o to. –

+2

Jest to odpowiedni wątek, który może pomóc: http://stackoverflow.com/questions/717218/why-not-always-use-arraylists-in-java-instead-of-plain-ol-arrays – Brian

+1

masz na myśli 'Tablice' jak w 'java.util.Arrays' lub" tablice "jako ogólne pojęcie informatyczne dla ciągłego bloku pamięci dostępnego przez indeks? –

Odpowiedz

6

Sprawdź this comparison.

Jak widać, istnieją istotne różnice między tymi dwoma konstrukcjami. Znajdziesz interfejsy API używające jednego lub drugiego (i obu), i musisz zrozumieć zalety/wady i różnice funkcjonalne między tymi dwoma.

Jedną szczególną różnicą jest to, że natywna tablica może przechowywać prymitywy bez nieefektywności boksowania/rozpakowywania. Jest to znaczące, gdy masz duże tablice reprezentujące strumienie danych/zestawy danych.

Należy również zauważyć, że ArrayList jest nie kowariant. Oznacza to, że Integer[] jest Number[], ale ArrayList<Integer> nie jest ArrayList<Number>. Aby uzyskać więcej informacji, patrz here.

+0

"To nie jest klasa" - nie jest poprawna –

4

Tablice i ArrayList s służą innym, choć czasami nakładającym się, celom.

Ale poza tym prostym faktem jest to, że nie kodujesz w próżni, więc używasz interfejsów API obejmujących tablice, więc poznanie ich nie jest opcjonalne. Tablice są absolutnie podstawową strukturą w informatyce.

+0

Właściwie myślę, że facet mógłby zakodować w próżni, biorąc pod uwagę jego pytanie ... – Zo72

2

Bardzo ważne jest posiadanie odpowiedniego fundamentu w podstawach programowania. Podstawy te obejmują takie typy zmiennych, funkcje, argumenty, tablice itd. Bez właściwego fundamentu wszystko, czego się uczysz, może się zawalić, ponieważ nie masz odpowiedniego fundamentu. Innymi słowy, powiedzmy, że chcesz nauczyć się języka, możesz zacząć uczyć się całych fraz po zapamiętywaniu, ale miło jest, gdy niektóre słowa znikają z języka i zaczynają się trawić i układają, jak możesz wydobywać zdania ze słów zamiast brutalny wymuszenie i zapamiętanie wszystkich zdań, których potrzebujesz.

2

Ważne jest, aby nauczyć się tablic, jeśli chcesz lepiej zrozumieć, co dzieje się "za kulisami", lub jeśli chcesz nauczyć się języka niższego poziomu, takiego jak język C lub assembler.

Czy mogę zapytać, gdzie uczysz się języka Java? Czy to jest dla szkoły/uczelni? Jeśli tak, spróbuj wydostać coś z pracy z tablicami, ponieważ będą one używane w kursach takich jak struktury danych, a zwłaszcza jeśli zaczniesz używać języka, który nie ma odpowiednika ArrayList.

Dowiedz się wszystkiego, co możesz na ten temat. Zrozumienie, co się dzieje, jest satysfakcjonujące.

4

Jest wiele rzeczy, które można zrobić z tablicami, których nie można wykonać z ArrayList s. Na przykład,

  1. Przeczytaj kilka bajtów lub kod-jednostki z pliku za pomocą byte[] lub char[]
  2. połączenia rodem numerycznej lub graficznej biblioteki, która zajmuje się wektorów lub macierzy reprezentowane float[] s lub double[] s

Można użyć innych abstrakcji niepochodzących z prymitywów zamiast ArrayList, ale czasami najlepszym sposobem reprezentowania ciągłego regionu pamięci podzielonego na jednostki numeryczne jest użycie tablicy.

0
String []array = { "I","DO","NOT","RESIZE" }; 
+0

@szaradża wcale nie. Najprostszy przykład, jaki mogłem wymyślić, aby pokazać różnice między tablicami a listami układów. – Zo72

Powiązane problemy