BE/자료구조

해싱이란? 자료구조를 공부하다 보면 보이는 HashMap Hashset 같은 것들이 있습니다. 여기서 Hash는 무엇이고 왜 이렇게 많이 쓰는 걸까요? 우선 해시는 데이터를 다루는 기술 중 하나입니다. 법원같이 여러 자료들을 정리해놔야 하는 곳은 그냥 어떤 규칙도 없이 마구잡이로 정리를 해놨을까요? 사건번호 같은걸 부여해 규칙에 맞게 정리했을 거라고 예상할 수 있습니다. 해싱이란 해시함수를 이용하여 데이터를 저장하고 검색하는 기법을 말합니다. 해시함수는 임의의 데이터를 고정된 길이의 값으로 리턴해주는 함수로 데이터가 저장되어 있는 곳을 알려주기 때문에 많은 데이터 중에서도 원하는 데이터의 위치를 빠르게 찾을 수 있어서 자주 이용됩니다. 여기서 만들어진 값을 저장하고 접근할 수 있는 구조로 있는 곳을 해시..
자료구조란? - 효율적인 접근 및 수정을 가능케 하는 자료의 조직, 관리 저장을 의미한다. 더 정확히 말해, 자료구조는 데이터 값의 모임, 데이터 간의 관계, 데이터에 적용할 수 있는 함수나 명령을 말한다. 자료구조는 보다 효율적인 알고리즘을 사용할 수 있게 한다. 배열(Array) 자료구조의 가장 기본이다. 데이터를 순차적으로 저장해 0번 인덱스부터 인덱스를 통해 접근할 수 있다. 데이터를 순차적으로만 접근할 수 있어 위치를 모르는 경우 효율이 떨어짐. 배열을 선언할 때 지정된 크기로 크기가 고정됨. 배열에 들어갈 수 있는 데이터는 선언된 자료형으로 고정됨. 보통 크기가 고정되어 있거나 데이터 위치의 변경이 필요하지 않은 경우 사용한다. ArrayList 배열과 유사하지만 배열의 부족한 효율성을 보안하..
Vector ArrayList 동기화 O X 용량증가분 요소가 용량을 초과하면 현재 배열크기의 50%증가 요소가 용량을 초과하면 현재 배열크기의 100%증가 도입 JDK1.0 JDK1.2 속도 동기화가 되어 있기 때문에 느립니다. 동기화되지 않기 때문에 빠릅니다. - 차이점 - 우선 이 글을 보면 ArrayList에는 용량 증가분을 조절할 수 있는 파라미터를 받는 생성자는 존재하지 않지만 Vector의 생성자에는 초기 용량과 용량 증가분을 설정할 수 있는 생성자가 존재한다. - ArrayList는 동기화되지 않기 때문에 Vector보다는 성능이 빠르다. 또한 ArrayList는 데이터수가 용량을 초과하는 경우 현재 배열의 50%를 추가로 늘려주는 반면 Vector는 100%를 추가로 늘려줘 메모리를 과하..
- LinkedList 구조 LinkedList는 ArrayList와 함께 List를 구현한 클래스로 Doubly-linked list 형태를 갖고 있다. Doubly-linked는 양방향 구조로 각 노드가 앞, 뒤 노드를 참조하여 체인의 형태를 갖는다. LinkedList는 배열의 형태가 아니기 때문에 요소를 중간에 추가/삭제가 빈번할 때 유리하다. 하지만 첫 인덱스나 마지막 인덱스의 요소 추가/삭제는 ArrayList가 유리하다. - LinkedList Constructors LinkedList()는 ArrayList와는 다르게 초기 용량을 설정 불가능하다. LinkedList는 노드를 이용하기 때문에 용량이 필요 없음. public LinkedList​(Collection
ArrayList란? - ArrayList는 List인터페이스를 구현하기 때문에 데이터의 저장순서가 유지되고 중복을 허용한다는 특징을 갖는다. ArrayList는 Object배열을 이용해서 데이터를 순차적으로 저장한다. 이렇게 말하면 Object배열과 다를게 없지만. ArrayList는 동적으로 배열의 공간을 조절하며 배열이 아닌 ArrayList를 쓰게되면 요소가 용량을 넘어서게 되면 용량을 자동으로 늘려 추가적으로 요소를 넣을 수 있게 해준다. ArrayList Constructors - ArrayList() 는 초기 용량을 10으로 설정하여 빈 ArrayList를 생성합니다. - ArrayList(Collection c) 를 사용하면 된다. ArrayList 예제 import java.util.Ar..
자료구조란? - 효율적인 접근 및 수정을 가능케 하는 자료의 조직,관리 저장을 의미한다. 더 정확히 말해, 자료구조는 데이터 값의 모임,데이터 간의 관계, 데이터에 적용할 수 있는 함수나 명령을 말한다. 자료구조는 보다 효율적인 알고리즘을 사용할 수 있게한다. 자료구조의 분류 - 자료구조에는 여러 종류가 있으며, 각각의 자료구조는 각자의 연산 및 목적에 맞추어져 있다. 자료구조에는 각각의 장단점이 있으므로 최적의 알고리즘을 위해서는 상황의 맞는 자료구조를 사용할 수 있어야한다. 크게는 단순구조, 선형 구조, 비선형 구조, 파일구조로 이루어져 있지만 각각의 장단점과 구현은 앞으로의 게시물에서 알아보도록 하자.
E@st
'BE/자료구조' 카테고리의 글 목록