일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 자료구조
- 자바예외
- aop
- AWS RDS
- SQL쿡북
- jpa
- 알고리즘
- 기술면접
- 자바스터디
- 인덱스
- 자바
- 알고리즘분석
- 인프런김영한
- java
- 인프런백기선
- 클린코드
- AWS
- 이펙티브자바
- DDD
- 혼공SQL
- react
- 스프링부트와AWS로혼자구현하는웹서비스
- MariaDB
- mysql
- 네트워크
- 이팩티브 자바
- CleanCode
- 이펙티브 자바
- 도메인 주도 개발 시작하기
- vue.js
- Today
- Total
기록이 힘이다.
ArrayList 클래스 본문
인덱스가 유효하지 않으면 예외를 던지는 get 메서드를 호출.
get 메서드 호출을 포함한 set 메서드의 모든 것은 상수 시간.
단일 인자 버전 메서드인 add(E)를 호출하고 add(E) 메서드는 새로운 인자를 마지막에 넣습니다.
그다음 다른 요소를 오른쪽으로 이동시키고 올바른 자리에 새로운 요소를 넣습니다.
일련의 호출에서 평균 시간을 계산하는 알고리즘 분류 방법을 분할 상환 분석이라고 합니다. 핵심 개념은 일련의 호출을 하는 동안 배열을 복사하는 추가 비용이 분산되거나 분할 상환되었다는 것입니다.
add(E) 메서드가 상수 시간이라면 add(int, E) 메서드는 어떨까요? add(E) 메서드를 호출한 후에 배열 일부에 반복문을 실행하고 요소를 시프트합니다. 이 반복문은 리스트의 끝에 요소를 추가하는 특별한 경우만 제외하면 선형입니다.
반복문이 한 개라면 알고리즘은 보통 선형입니다. 반복문 두 개가 중첩되었다면 이 알고리즘은 보통 이차입니다.
하지만, 반복 횟수가 항상 n에 비례하지 않는다면 좀 더 고민해봐야 합니다.
연결 자료구조
자료구조가 연결되었다함은 노드라는 객체들이 다른 노드에 대한 참조를 포함한 형태로 저장된 것을 의미합니다. 연결 리스트에서 각 노드는 리스트의 다음 노드에 대한 참조를 포함합니다.
package com.allendowney.thinkdast;
/**
* @author downey
*
*/
public class ListNode {
public Object data;
public ListNode next;
public ListNode() {
this.data = null;
this.next = null;
}
public ListNode(Object data) {
this.data = data;
this.next = null;
}
public ListNode(Object data, ListNode next) {
this.data = data;
this.next = next;
}
public String toString() {
return "ListNode(" + data.toString() + ")";
}
}
ListNode node1 = new ListNode(1);
ListNode node1 = new ListNode(2);
ListNode node1 = new ListNode(3);
node1.next = node2;
node2.next = node3;
node3.next = null;
ListNode node0 = new ListNode(0, node1);
<가비지 컬렉션>
연결 리스트 구현의 한 가지 장점은 요소를 제거하면 리스트 크기가 줄어들고 사용하지 않는 노드는 즉시 가비지 컬렉션이 될 수 있다는 것입니다.
'JAVA > 자료구조와 알고리즘' 카테고리의 다른 글
이중 연결 리스트 (0) | 2022.06.23 |
---|---|
LinkedList 클래스 (0) | 2022.06.22 |
알고리즘 분석(SET, INDEXOF, ADD, REMOVE) (0) | 2022.06.16 |
인터페이스 (0) | 2022.06.16 |
기술 면접에 필요한 실용주의 자료구조와 알고리즘 (0) | 2022.05.27 |