분류 전체보기(129)
-
ArrayList vs LinkedList
ArrayList LinkedList 데이터 저장소Object array[ ] 노드 Node - E item; 조회 처음O(1) O(1) 중간O(1) O(n) 끝O(1) O(1) 데이터 조작 추가/제거 처음O(n) O(1) 중간접근+ 추가제거 + 밀기O(1) O(1) + O(n)-> O(n) 접근 + 추가/제거O(n) + O(1) -> O(n) 끝O(1) O(1) 수정 처음O(1) O(1) 중간O(1) O(n) 끝O(1) O(1) ArrayList 는 List 내의 배열을 사용한다.따라서, 배열 중간에 데이터를 추가/제거 하지 않는다면 배열 조작만으로 대부분의 작업이 가능하다.반면, LinkedList 는 E item 을 품는 Node 인스턴..
2024.07.05 -
List - LinkedList
이전 글에서는 배열을 편리하게 다룰 수 있는 ArrayList 에 대해 학습 해보았다.배열의 끝에서의 데이터, 추가, 제거는 빠르게 처리 가능하나, 처음, 중간에서 동작을 처리할 때는 낮은 처리 속도를 내고 있었다. 이번엔 처음, 중간에서 빠른 작업 처리가 가능한 LinkedList에 대해 알아보자. public class 내맘대로LinkedList{ private Node first; private int size; private Node last; private class Node{ private Node next; private Object item; }} LinkedList 는 ArrayList와 다르게 Node 라는 인스턴스 멤버를 사용한다.배열이 책꽂..
2024.07.02 -
List - ArrayList
ListList 는 Collection Framework 의 자료 구조중 하나로, 순서가 있으며, 중복을 허용한다. List 특징과 한계점앞서, 배열은 크기가 정적으로 고정된다. 는 내용을 학습했다.List는 이러한 한계점을 극복. 크기가 동적으로 변동된다.public class 내맘대로ArrayList{ private static final int DEFAULT_CAPA = 10; // 배열의 길이 private Obejct[] elementData; private int size; // 배열에 담긴 자료 수 private void grow(){ /* 1. 기존 크기 * 2 배값 구하기 2. 새로운 배열 생성[2배 크기] ..
2024.07.02 -
복습 - 배열
앞서 기본적인 자료구조인 배열에 대해 학습 하였다.배열을 복습해보자. 배열관련있는 데이터들은 연속적으로 묶은 기본적인 자료구조이다. 배열의 특징과 한계점1. 배열은 인덱스를 통해 배열에 담긴 값에 빠르게 접근 및 수정할 수 있다. 1회연산 O(1)공식배열의 시작 참조값 + (데이터 크기 * 인덱스 위치)ex)int[] arr = new int[5_000];arr[4500] x100 + (4byte * 4500) // x10018002. 순서가 보장된다.3. 배열의 중간간 위치를 수정하기 위한 메서드를 일일이 작성해야 한다.4. 배열의 처음, 중간에 값을 추가/삭제 하기 위해선 기존 데이터 상당량을 이동시켜야 한다. O(n) (기존 값들이 훼손되거나 불필요한 공간이 남으면 안 되기 때문)5. 배열을..
2024.07.02 -
휴먼에러_지역변수, 인스턴스 변수 착각
상황- LinkedList 학습- 편의상 add() 메서드 등을 main() 이 있는 class 에서 static method() 로 작성함- Node를 연결시키고 마지막 Node에 새로운 노드를 추가하려고 함public class Node { private Object item; private Node next;} 문제점- 아래와 같은 코드를 통해새로 노드를 추가했다고 생각했으나 추가가 안 됨.private static void add(Node node, String param) { Node lastNode = getLastNode(node); Node next = lastNode.getNext(); next = new Node(param);} 문제점착각 내용getLastN..
2024.06.28 -
배열
배열이란?배열은 연관된 데이터를 모아서 관리하기 위한 자료 구조이다. 생성 원리int[] intArr = new int[5]; // x100 자바에서 배열은, heap 메모리 영역에 생성된다.배열 생성 후, 할당받은 메모리의 주소값을 변수에 담아 활용하게 된다. 이렇게 생성된 배열은, 연속된 메모리 구조를 갖는다. (연관된 데이터 모아서 관리하는 게 목적이니까)이 때, 배열은 인덱스를 갖게 된다. 이 때 인덱스는 0번 부터 시작한다. 인덱스는 원하는 메모리 위치에 접근하는 이정표가 된다.intArr[0] = 1;intArr[1] = 5;intArr[2] = 9;intArr[3] = 15; 접근 공식메모리 주소값 + (배열의 타입이 갖는 메모리 크기 x 인덱스) 위의 공식을 바탕으로, 인덱스를 통해 ..
2024.06.23