728x90
벡터
벡터는 중간에 있는 요소를 가져오고자 할 때 유용하다. 인덱스 접근이 필요할 때 유용한 셈이다.
벡터는 대괄호로 둘러싸서 만든다.
벡터에도 first 와 rest 가 등장한다.
1 2 3 4 5 6 7 8 9 | user=> [:jar1 1 2 3 :jar2] [:jar1 1 2 3 :jar2] user=> (first [:jar1 1 2 3 :jar2]) :jar1 user=> (rest [:jar1 1 2 3 :jar2]) (1 2 3 :jar2) user=> | cs |
벡터는 인덱스를 통해 요소에 빠르게 접근가능하다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | user=> (nth [:jar1 1 2 3 :jar2] 0) :jar1 user=> (nth [:jar1 1 2 3 :jar2] 1) 1 user=> (nth [:jar1 1 2 3 :jar2] 2) 2 user=> (nth [:jar1 1 2 3 :jar2] 3) 3 user=> (nth [:jar1 1 2 3 :jar2] 4) :jar2 user=> (nth [:jar1 1 2 3 :jar2] 5) IndexOutOfBoundsException clojure.lang.PersistentVector.arrayFor (PersistentVector.java:158) user=> | cs |
물론 리스트에도 nth 를 사용할 수 있지만, 벡터의 인덱스 접근 성능이 더 좋다.
리스트는 처음부터 시작해서 원하는 요소까지 가면서 그 요소를 찾는 반면에, 벡터는 전체를 거치지 않고 바로 요소에 접근할 수 있다.
728x90
'프로그래밍 Programming' 카테고리의 다른 글
클로저 05. 데이터 컬렉션 - 맵 (0) | 2018.08.17 |
---|---|
클로저 04. 데이터 컬렉션 - 컬렉션의 공통점 (0) | 2018.08.17 |
리눅스 계정 및 홈디렉토리 삭제 (0) | 2018.08.14 |
클로저 02. 데이터 컬렉션 - 리스트 (0) | 2018.08.13 |
클로저 01. 클로져 식의 기본 구조 이해하기 (단순값) (0) | 2018.08.11 |