Czytam książkę o programowaniu w Javie i chcę potwierdzić, że rozumiem definicję słowa „wektor”. Wikipedia twierdzi, że wektor to „jednowymiarowa tablica”, źródło http://en.wikipedia.org/wiki/Vector .
Czy nie byłoby łatwiej nazwać tablicę po prostu tablicą? Czy jest jakiś powód, dla którego potrzebujemy używać tak wymyślnego języka jak „wektor”? Czy istnieje różnica między tablicą a wektorem?
Źródło: Cracking the Coding Interview, wydanie 4, Gayle McDowell, strona 47.
FAQ
P - Dlaczego nie opublikowałeś tego na polish.stackexchange.com?
Odp .: Ponieważ uważam, że tylko ludzie zorientowani na informatykę będą mieli dobrą odpowiedź.
std::vector<…>
(„tablice” o dynamicznym rozmiarze). 2. CLR (środowisko uruchomieniowe .NET) rozróżnia również „tablice” i „wektory”, przy czym ten ostatni jest szczególnym przypadkiem tych pierwszych, mianowicie jednowymiarowych, opartych na zerach. To rozróżnienie jest ważne, ponieważ istnieją specjalne optymalizacje dla wektorów. 3. W matematyce n- liczba liczb rzeczywistych jest czasami nazywana „wektorem”.Odpowiedzi:
W typowym zastosowaniu „tablica” może oznaczać tablicę jednowymiarową lub tablicę wielowymiarową. Ponadto, w matematyce, A macierz jest 2-wymiarową tablicę podczas gdy wektor jest 1-wymiarową macierz.
źródło
Wektory nie są dokładnie tablicami. W każdym razie nie klasyczne. Są to tablice dynamiczne. Można je zmieniać w razie potrzeby, zamiast mieć stały rozmiar. Są zatem podobne do ArrayLists, ale nie do końca takie same.
ArrayLists różnią się od wektorów tym, że wektory synchronizują poszczególne operacje, co nie jest potrzebne do celów współbieżności, w szczególności dla Jona Skeeta . Dlatego Vector został wycofany na korzyść ArrayList, ale niektórzy nadal nazywają go Vector.
Nazwę pierwotnie pochodzi od terminu matematycznego na matrycy 1 wymiarów. Dzieje się tak pomimo tego, że struktura faktycznie jest n-krotką .
źródło
Zwykle wektor i tablica są tym samym i są używane zamiennie podczas programowania. Tak jest w większości miejsc, więc przez większość czasu nie powinieneś się tym przejmować.
To powiedziawszy, język jest nieprecyzyjny i czasami mamy słowa, które mają różne znaczenia w różnych kontekstach, które ostatecznie oznaczają to samo lub jedno słowo mające dwa lub więcej różnych znaczeń.
W C tablica to seria elementów danych tego samego typu, które są przechowywane w pamięci w sposób ciągły. Java odziedziczyła to znaczenie. To nie to samo, co lista lub wektor, ponieważ tablice są bardziej podstawowe niż te.
Wektor jest konstrukt matematyczny określa się jako obiekt, który może być dodany do innego obiektu tego samego typu lub może być pomnożony przez dowolny rzeczywistym (lub kompleks) liczby w wyniku innego wektora samego typu. Ma także kilka innych właściwości, które są bardzo przydatne.
Wektor ma wymiar . Jest to minimalna liczba różnych wektorów, które należy połączyć, aby uzyskać każdy możliwy wektor tego typu. Prędkość i przyspieszenie są wektorami trójwymiarowymi, ponieważ przestrzeń ma 3 kierunki podstawowe, a poprzez dodanie wielokrotności tych trzech kierunków podstawowych można uzyskać dowolną pozycję w przestrzeni. Pozycja w płaszczyźnie to wektor dwuwymiarowy, a poszczególne liczby to wektory jednowymiarowe.
Jednym ze sposobów przedstawienia wektora wymiaru n jest użycie tablicy n elementów, z których każdy reprezentuje ile każdego wektora bazowego należy dodać, aby dostać się do wektora.
Ponieważ można przedstawić wektor za pomocą tablicy elementów, z czasem oba pojęcia zostały zrównane. W wielu miejscach są po prostu tym samym, aw niektórych językach tablice nazywane są wektorami.
Innym przypadkiem, w którym jedno słowo ma dwa różne znaczenia, jest na przykład wymiar . Przykładem jest definicja Wikipedii wektora jako tablicy jednowymiarowej. Nie chodzi tu o wymiar wektorowy. Mówisz o komputerowej reprezentacji struktury danych. Trójwymiarowy wektor może być reprezentowany przez „1-wymiarową” tablicę o rozmiarze 3. 3 cyfry w linii. Macierz 3x3 może być reprezentowana przez tablicę „2-wymiarową”, którą programiści nazywają tablicą tablic. Jednak macierz 3x3 jest również matematycznym wektorem wymiaru 9 (ponieważ ma wszystkie właściwości wektora) i ma 9 liczb. Mylące, co?
W każdym razie myślę, że odpowiedź jest prosta: nie martw się. Wszystko zależy od kontekstu. Te dwa słowa mają różne pochodzenie, ale w kontekście struktur danych, gdy mówią wektor , oznaczają dokładnie tablicę .
źródło
Powyższe odpowiedzi opisują, dlaczego ta klasa różni się od „Array” - i podejrzewam, że powodem użycia innej nazwy jest to, że programistom pomaga dobrze zorganizowana przestrzeń nazw - innymi słowy, jeśli mówimy o „Vector”, to jest to wyjaśnij dokładnie, co masz na myśli, podczas gdy gdyby wszystkie podobne klasy były jedynie tablicami, nie byłoby to w pełni jasne.
źródło
Myślę, że termin „wektor” pochodzi od std :: vector C ++. Pojawił się przed Javą i C #.
źródło
To tylko niechlujna edycja.
Wczesne wersje Java nie zawierały ArrayList. Zamiast ArrayList zastosowano Vector. ArrayList został dodany później i dla większości celów jest teraz używany zamiast Vector. Oczekuję, że książka została napisana przed dodaniem ArrayList i że kiedy tekst został zaktualizowany, to odniesienie do wektora nie było.
Sugeruję unikanie tego rodzaju książki „naucz się wszystkiego za dziesięć minut”. Zasadniczo są one pisane szybko i niechlujnie. Ten poziom wiedzy nie zapewni ci pracy w poważnym sklepie.
Zamiast tego poszukaj dobrze recenzowanych książek uznanych użytkowników danej technologii i przeczytaj je dla zrozumienia.
źródło
java.util.Vector
?Termin wektor pochodzi z inżynierii / fizyki. Wektory reprezentują linie 2 i 3 wymiarowe, które mają kierunek. Załóżmy na przykład, że pocisk ma prędkość poziomą 20 m / s i prędkość pionową 10 m / s. Zatem przedstawilibyśmy to jako (20,10). Leci w pewnym sensie po przekątnej w prawo, więc zobaczmy teraz, jak wektory prędkości matematycznych stają się tablicami, czyli wektorami.
źródło
Nie nazywamy wektorów tablic, ani źle zrozumiałeś swoje źródło, ani źródło źle zrozumiał Javę, albo jedno i drugie.
Tablica jest zupełnie inną strukturą danych niż Vector, która różni się ponownie od Listy (której używa wklejony kod).
Oczywiście wektor matematyczny może być zaimplementowany w Javie za pomocą jednego z trzech mechanizmów, a pod maską można zastosować zarówno Vector, jak i Listę za pomocą tablic.
źródło