Java 4

[Java] LinkedList 구현 및 Array와 차이점

자료구조와 알고리즘을 학습하며 LinkedList를 자주 접하게 되었다. LinkedList는 배열과 비슷한 구조로 자주 비교되곤 하는데, 이번에 배열과 LinkedList가 어떤 부분에서 다른지 확인해보려 한다. 앞으로 설명할 예시 데이터 형태는 int이다. Array / 배열 배열은 인덱스를 사용하여 요소에 직접 접근이 가능하다. 이 말은 인덱스를 알고 있으면 상수 시간 O(1)에 해당 요소에 접근할 수 있다는 뜻이다. 모든 요소는 메모리에 연속되어 저장된다. 첫 번째 요소의 인덱스(주소)를 알면 다른 요소에도 빠르게 접근이 가능하다. 배열은 생성시 크기가 고정된다. 계속해서 값을 추가하는 등의 작업이 있다면 효율적이지 않고 더 큰 배열을 만들어야 한다. 장점 조회 및 검색에 빠르다. 단점 삽입과 삭..

Java 2023.09.20

[Java - Hash] HashTable / HashCollision(해시 충돌)

HashTable 일반적인 List나 배열의 경우 연속된 데이터를 조회할 때 인덱스를 기반으로 검색한다. // 아래와 같은 int 배열이 있을 때 숫자 3은 index 값으로 2를 갖게된다. // 숫자3을 출력하기 위해 = arr[2]를 사용할 수 있다. ; int[] arr = {5,1,3}; HashTable의 경우 한 쌍의 Entry인 Key : Value 로 저장하는데, 위의 arr배열을 Hash로 저장하면 아래와 같다. HashTable table = new HashTable(); [{0 : 5}, {1 : 1}, {2 : 3}] 각 요소를 출력하기 위해 아래와 같은 함수를 사용할 수 있다. table.get() Hash Function HashTable에 데이터를 추가하거나 조회할 때, Has..

Java 2023.09.04

Java - 변수

변수 선언 방법. 1. 변수타입 변수명; int age; int age = 28; int age = 28, num = 5; 3번의 경우는 타입이 같은 변수를 여러개 설정하는 경우이다. 2. Camel case int myAge = 28; 맨 처음 단어인my는 소문자로 써주고 두번째 단어인age의 앞 글자만 대문자로 써주는 방식. 보통 Camelcase는 변수를 설정할 때 두번째 단어부터 앞글자를 대문자로 써주는 방식이다 3. 변수 초기화 초기화란 변수에 처음으로 값을 저장하는 것을 의미한다. 간단히 문제를 풀어보자면, System.out.println("1" + "2"); // String 12 System.out.println(true+""); // true System.out.println('..

TIL 2023.02.13