Java Programming에 관한 책을 읽고 있는데 “vector”라는 단어의 정의를 이해하고 싶습니다. Wikipedia에 따르면 vector는 “일차원 배열”이며 출처는 http://en.wikipedia.org/wiki/Vector 입니다.
배열을 단순히 배열로 호출하는 것이 더 간단하지 않습니까? “벡터”와 같은 멋진 언어를 사용해야하는 이유가 있습니까? 배열과 벡터 사이에 차이가 있습니까?
출처 : Gayle McDowell의 코딩 인터뷰 균열, 4 판, 47 페이지.
FAQ
Q-english.stackexchange.com에 이것을 게시하지 않은 이유는 무엇입니까?
A-컴퓨터 공학에 관심이있는 사람들 만 대답 할 수 있다고 생각하기 때문입니다.
답변
답변
벡터는 정확히 배열이 아닙니다. 어쨌든 고전적인 것은 아닙니다. 그것들은 동적 배열입니다. 크기가 고정되어 있지 않고 필요에 따라 크기를 조정할 수 있습니다. 따라서 ArrayList와 유사하지만 동일하지는 않습니다.
ArrayLists는 Vectors가 Vector와 다릅니다 .Vectors는 개별 작업을 동기화하며 이는 특히 Jon Skeet에 따라 동시성 목적으로 원하지 않는 것 입니다. 따라서 Vector는 ArrayList를 위해 더 이상 사용되지 않지만 일부는 여전히 Vector라고 부릅니다.
이 이름 은 원래 1 차원 행렬의 수학 용어에서 파생되었습니다. 이것은 실제로 n- 튜플 인 구조에도 불구하고 있습니다.
답변
일반적으로 벡터 와 배열 은 동일하며 프로그래밍 할 때 서로 바꿔 사용할 수 있습니다. 그것은 대부분의 장소에 있기 때문에 대부분 걱정하지 않아도됩니다.
즉, 언어는 정확하지 않으며 때때로 같은 의미를 갖는 다른 문맥에서 다른 의미를 갖는 단어 또는 두 개 이상의 다른 의미를 갖는 단어가 있습니다.
C에서 배열 은 연속적으로 메모리에 저장되는 동일한 유형의 일련의 데이터 요소입니다. 자바는 그 의미를 물려 받았습니다. 배열은 그보다 기본이므로 List 또는 Vector와 동일하지 않습니다.
벡터는 동일 유형의 다른 객체에 추가 될 수 있고, 또는 동일한 종류의 다른 벡터에 결과적인 실제 (또는 단지) 곱한 될 물체로 정의 수학 구성체이다. 또한 매우 유용한 몇 가지 다른 속성이 있습니다.
벡터에는 차원이 있습니다. 해당 유형의 가능한 모든 벡터를 얻기 위해 결합해야하는 다른 벡터의 최소 개수입니다. 공간은 3 개의 기본 방향을 가지고 있기 때문에 속도와 가속도는 3 차원 벡터이며이 3 개의 기본 방향의 배수를 추가하면 공간의 어느 위치에서나 얻을 수 있습니다. 평면에서의 위치는 2 차원 벡터이며 개별 숫자는 1 차원 벡터입니다.
차원 n 의 벡터 를 나타내는 한 가지 방법 은 n 개의 요소 배열을 사용 하는 것입니다. 각 요소 는 벡터에 도달하기 위해 추가해야하는 각 기본 벡터의 양을 나타냅니다.
시간이 지남에 따라 다양한 요소를 사용하여 벡터를 표현할 수 있으므로 두 개념이 동일 해졌습니다. 그래서 많은 곳에서 그것들은 단순히 똑같으며 어떤 언어에서는 배열을 벡터라고 부릅니다.
한 단어가 두 가지 다른 의미를 갖는 다른 경우는 예를 들어 dimension 입니다. 1 차원 배열로 벡터의 wikipedia 정의가 예입니다. 여기서 벡터 치수에 대해 이야기하고 있지 않습니다. 데이터 구조의 컴퓨터 표현에 대해 이야기하고 있습니다. 3 차원 벡터는 크기가 3 ~ 3 인 “1 차원”배열로 표시 될 수 있습니다. 3×3 행렬은 “2 차원”배열로 표현 될 수 있는데, 이는 프로그래머가 배열 배열을 호출하는 것입니다. 그러나 3×3 행렬은 벡터의 모든 속성을 가지기 때문에 차원 9의 수학 벡터이며 9 개의 숫자를 갖습니다. 혼란 스럽습니까?
어쨌든 대답은 간단합니다. 걱정하지 마십시오. 그것은 모두 상황에 달려 있습니다. 두 단어는 서로 다른 원점을 갖지만 데이터 구조의 맥락에서 벡터 라고 말하면 정확히 array 를 의미합니다 .
답변
위의 답변은이 클래스가 “배열”과 다른 이유를 설명합니다. 다른 이름이 사용되는 이유는 프로그래머가 잘 구성된 네임 스페이스를 사용하여 도움을 받기 때문입니다. 즉, “벡터”에 대해 이야기하면 모든 클래스가 단순히 배열이라면 완전히 명확하지는 않지만 정확히 어떤 클래스를 의미하는지 명확하게하십시오.
답변
“벡터”라는 용어는 C ++의 std :: vector에서 유래 한 것 같습니다. Java와 C # 이전에 나타났습니다.
답변
딱딱한 편집입니다.
초기 버전의 Java에는 ArrayList가 포함되지 않았습니다. ArrayList 대신 Vector가 사용되었습니다. 나중에 ArrayList가 추가되었으며 현재 대부분의 목적으로 Vector 대신 사용됩니다. 이 책은 ArrayList가 추가되기 전에 작성되었으며 텍스트가 업데이트 될 때 벡터에 대한이 참조는 그렇지 않았을 것으로 예상됩니다.
이런 종류의 “10 분 만에 배우십시오”책을 피하는 것이 좋습니다. 일반적으로 그것들은 빠르고 간결하게 작성됩니다. 이 수준의 지식은 진지한 상점에서 일자리를 얻지 못할 것입니다.
대신 기술에 대해 잘 알고 이해 한 사용자가 잘 검토 한 책을 찾아보십시오.
답변
벡터라는 용어는 공학 / 물리에서 나옵니다. 벡터는 방향이있는 2 차원 및 3 차원 선을 나타냅니다. 예를 들어, 발사체의 수평 속도는 20m / s이고 수직 속도는 10m / s입니다. 따라서 이것을 (20,10)으로 표시합니다. 그것은 대각선 오른쪽으로 날아가고 있습니다. 이제 수학적으로 속도 벡터가 일명 벡터 배열이되는 방법을 봅니다.