프로그래밍 Programming
클로저 03. 데이터 컬렉션 - 벡터
문장전달자
2018. 8. 17. 13:11
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