CS/자료구조
-
Array vs List 차이점, LinkedList, ArrayListCS/자료구조 2023. 4. 25. 22:38
Array(배열) List(리스트) 인덱스가 있는 자료형 객체 생성 시 크기 할당 필수 크기를 할당할 필요가 없음 순차적으로 자료 저장 👉자주 삭제되거나 추가되는 데이터는 적절하지 않음 앞의 요소가 삭제되면 새로 추가되는 요소가 그 공간에 저장될 수 있음 삽입, 삭제가 느림 (shift 해주는 비용이 생기기 때문) 👉 이 문제를 해결하기 위한 자료구조가 LinkedList 삽입, 삭제가 빠르지만 데이터 조회가 느림 LinkedList - 각각의 원소들은 자기 자신 다음에 어떤 원소인지만을 기억하고 있어 이 부분만 다른 값으로 바꿔주면 삽입과 삭제를 해결할 수 있음. - 원하는 위치에 한 번에 접근할 수 없음 - 삽입, 삭제 빠름, 조회 느림 ArrayList - 자바의 List 인터페이스를 상속받은 여러..
-
HashMap vs LinkedHashMap 차이점 및 사용CS/자료구조 2023. 4. 25. 22:30
Java springboot 서버단에서 일부 작업을 하다가, 객체로 데이터를 전달해줘야되는 과정에서 순서를 보장해야되는 경우가 있었다. 이렇게 객체를 담는데 순서를 보장하며 넣어주고 싶을 때 사용하는 자료구조가 "LinkedHashMap" 이다. LinkedHashMap은 Map에 입력된 순서를 기억하는 자료구조이다. LinkeHashMap에 저장되는 키와 값은 Map.Entry 클래스를 구현한 Node 클래스에 저장된다. Node 클래스에는 before, after 멤버가 있는데 LinkedHashMap에 입력된 순서에 따라 연결 리스트 구조를 형성한다. LinkedHashMap은 기본적으로 HashMap이라 사용법이 HashMap과 동일하다. 차이점을 살펴보면 아래와 같다. HashMap HashMa..
-
Collection - List, Set, MapCS/자료구조 2023. 3. 7. 20:49
1. List - 순서가 있음 - 중복 허용 - 크기가 가변적 - 인덱스로 원소에 접근 가능 1-1. LikedList - 양방향 포인터 구조로 데이터 삽입, 삭제가 빠르다. - ArryList보다 검색이 느리다. 1-2. ArrayList - 단방향 포인터 구조로 데이터 순차적 접근에 강점을 가진다. - 배열을 기반으로 데이터를 저장한다. - 데이터 삽입, 삭제가 느리다. - 데이터 검색이 빠르다. 2. Map key, value 한 쌍으로 이루어지는 데이터 집합 key는 중복을 허용하지 않으며 순서를 보장하지 않는다. 높은 검색 속도를 원할 때 주로 사용된다. 인덱스가 따로 존재하지 않기때문에 iterator를 사용. 2-1. HashMap - Key에 대한 중복이 없음, 순서를 보장하지 않음 - K..