전체 글

자료구조란? - 효율적인 접근 및 수정을 가능케 하는 자료의 조직, 관리 저장을 의미한다. 더 정확히 말해, 자료구조는 데이터 값의 모임, 데이터 간의 관계, 데이터에 적용할 수 있는 함수나 명령을 말한다. 자료구조는 보다 효율적인 알고리즘을 사용할 수 있게 한다. 배열(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
· 알고리즘
유클리드 호제법 이 문제를 풀기 위해 최대공약수와 최소공배수가 필요했다. 두 수의 최대 공약수를 구하는 기본적인 방법은 소인수분해를 한 뒤 공통부분을 찾는 것이다. 하지만 이렇게 하면 시간 복잡도가 O(n)이 된다. 또한 알고리즘으로 소인수분해를 구현하는 거 또한 간편하지 않다. 유클리드 호제법이란 두 수의 최대공약수를 쉽게 구할 수 있는 방법으로 시간 복잡도를 줄여 간편하면서도 효율적인 알고리즘이다. 두 수의 최대공약수 찾는 법 유클리드 호제법은 (a, b) 두 수가 있을 때 a를 b로 나눈 나머지가 0이 아니라면 b에 나머지를 넣고 a에 원래 b에 있던 값을 넣어 나머지가 0이 될 때까지 구하는 방법이다. 즉 (a, b) a%b=r 일때 (a,b) , (b, r) 두 개의 최대공약수는 같다는 것이다...
ArrayList란? - ArrayList는 List인터페이스를 구현하기 때문에 데이터의 저장순서가 유지되고 중복을 허용한다는 특징을 갖는다. ArrayList는 Object배열을 이용해서 데이터를 순차적으로 저장한다. 이렇게 말하면 Object배열과 다를게 없지만. ArrayList는 동적으로 배열의 공간을 조절하며 배열이 아닌 ArrayList를 쓰게되면 요소가 용량을 넘어서게 되면 용량을 자동으로 늘려 추가적으로 요소를 넣을 수 있게 해준다. ArrayList Constructors - ArrayList() 는 초기 용량을 10으로 설정하여 빈 ArrayList를 생성합니다. - ArrayList(Collection c) 를 사용하면 된다. ArrayList 예제 import java.util.Ar..
자료구조란? - 효율적인 접근 및 수정을 가능케 하는 자료의 조직,관리 저장을 의미한다. 더 정확히 말해, 자료구조는 데이터 값의 모임,데이터 간의 관계, 데이터에 적용할 수 있는 함수나 명령을 말한다. 자료구조는 보다 효율적인 알고리즘을 사용할 수 있게한다. 자료구조의 분류 - 자료구조에는 여러 종류가 있으며, 각각의 자료구조는 각자의 연산 및 목적에 맞추어져 있다. 자료구조에는 각각의 장단점이 있으므로 최적의 알고리즘을 위해서는 상황의 맞는 자료구조를 사용할 수 있어야한다. 크게는 단순구조, 선형 구조, 비선형 구조, 파일구조로 이루어져 있지만 각각의 장단점과 구현은 앞으로의 게시물에서 알아보도록 하자.
· BE/Java
제네릭스(Generics) 제네릭스란? 제네릭스는 JDK1.5 에서 처음 도입된 것으로 객체들을 다루는 메서드나 컬렉션 클래스에 컴파일 시의 타입체크를 해주는 기능이다. 객체의 타입을 컴파일 시에 체크하기 때문에 객체의 타입 안정성을 높인다는 것은 의도하지 않은 타입의 객체가 저장되는 것을 막고 저장된 객체를 꺼내올 때 원래의 타입과 다른 타입으로 잘못 형변환되어 발생할 수 있는 오류를 줄여준 다는 뜻이다. 제네릭의 선언 제네릭 타입은 클래스와 메서드에 선언 가능한데, 클래스에서 선언하는 제네릭 타입으로 class Box { Object item; void setItem(Object item) { this.item = item; } Object getItem() { return item; } } 이 클래..
E@st
학습 기록