[Java] LinkedList - 컬렉션 프레임워크
·
TIL/Java
들어가면서ArrayList는 내부에 배열을 활용하여 리스트를 구현하는 자료구조였다.따라서 ArrayList는 배열이 갖고 있는 단점을 그대로 갖고 있다.크기를 동적으로 변경할 수 없다데이터의 삭제 / 삽입시에 성능이 좋지 않다노드와 연결딱 필요한 만큼만 크기를 갖고, 데이터를 중간에 삭제 / 삽입할 때 효율적인 자료구조가 존재한다바로 노드를 만들어서 서로 연결하는 방식이다 노드 클래스public class Node{ Object item; Node next;} 노드에 데이터 추가  Node 인스턴스는 item와 next를 저장하고 있다.item은 데이터를 의미하고, next는 다음 노드의 참조값을 저장하게 된다따라서 Node1의 참조값을 Node0의 next가 저장하고 있다면 두 노드가 연결된 것 처럼 ..
[Java] ArrayList - 컬렉션 프레임워크
·
TIL/Java
배열가장 기본적인 자료 구조인 배열에 대해서 먼저 알아보자.배열의 특징 ( 인덱스 )인덱스를 활용하면 매우 빠르게 데이터에 접근이 가능하다인덱스를 통한 입력, 변경, 조회의 경우 단 한 번의 연산으로 원하는 위치에 도달할 수 있다.배열의 인덱스배열은 물리 메모리상에 순서대로 붙어서 선언된다따라서 해당 배열이 저장하고 있는 자료형에 따라서 다음과 같은 연산이 가능하다배열의 시작 위치 + 자료의 크기 * 인덱스 크기즉, 배열의 크기와 무관하게 한 번의 연산으로 원하는 위치를 찾을 수 있게 된다따라서 배열의 인덱스를 활용하는 연산이 매우 빠르게 된다배열의 한계배열은 생성하는 시점에 그 크기를 한 번만 정할 수 있고, 이후 수정할 수 없다배열의 특정 위치에 값을 추가/삭제하기 위해서는 해당 인덱스로부터 뒤에 있..
[Java] 제네릭 개요
·
TIL/Java
제네릭이 필요한 이유간단하게 Integer를 담을 수 있는 클래스를 생성해보자public class IntegerBox { private Integer value; public Integer getValue() { return value; } public void setValue(Integer value) { this.value = value; }} 마찬가지로 String을 담을 수 있는 StringBox를 만들고 싶다면, 동일한 코드에서 타입만 Integer에서 String으로 바꾸면 된다.그런데 만약 또 다른 타입을 담아야 하는 Box를 여러 개 작성해야한다면? 코드에서 바뀌는 부분은 타입밖에 없는데 클래스는 매번 새로 작성해야 한다.코드의 재사용성..
[Java] 날짜와 시간 데이터 다루기
·
TIL/Java
.
[Java] 열거형 - enum
·
TIL/Java
열거형이 왜 생겼을까?열거형이 무엇인지보다 열거형이 생겨난 흐름에 대해서 알아보도록 하겠다 자바를 통해 애플리케이션을 작성할 때, 모든 데이터를 숫자를 통해서만 관리할 수는 없다. int형 long형 때로는 문자열을 통해서 데이터를 받고, 조작해야 한다. 예를 들어 자바를 통해 주유소 기계를 만든다고 생각해보자요구사항기름은 3가지를 선택할 수 있으며, 기름별로 요금이 다르다.경유  -> 1L : 1000휘발유 -> 1L : 2000고급유 -> 1L : 3000주유 받을 기름을 선택하고, 몇 리터를 넣을지 선택하면 얼마를 내야하는지 계산하도록 만들어보자 import java.util.Scanner;public class OilMachineMain { public static void main(Stri..
[Java] 래퍼 클래스
·
TIL/Java
자바와 기본형자바는 객체 지향 언어로 객체가 자바의 대부분을 차지한다. 일부 객체가 아닌 것들이 존재하는데 바로 int, long, char와 같은 기본형이다. 기본형은 객체가 아니라 다음과 같은 한계점이 있다.메서드를 제공할 수 없음null 값을 제공할 수 없음. 프로그래밍을 하다보면 필연적으로 값이 없다는 상태를 나타내는 null 값을 사용해야 할 때가 있는데 기본형에서는 이를 표현할 수가 없다기본형의 한계를 이해하기public class PrimitiveLimit { public static void main(String[] args) { int value = 10; int i1 = compareTo(value, 5); int i2 = compareTo(v..