반응형

언어(Language)/Java 95

[Java] 자바 ArrayList와 LinkedList의 차이 (어레이 리스트와 링크드 리스트의 차이)

ArrayList ArrayList의 데이터 추가를 하는 상황의 이미지이다. ArrayList에서 데이터를 추가 또는 삭제하기 위해서는 다른 데이터를 복사해서 이동해야 한다. ArrayList에 객체를 순차적으로 저장할 때는 저장된 객체를 이동시키지 않아도 되지만, 중간에 위치한 객체를 추가하거나 삭제할 때에는 데이터의 이동이 많이 일어나게 된다. 따라서, 추가 및 삭제에는 속도 저하가 일어나게 된다. 하지만, 인덱스의 주소 값을 얻기 위해서는 배열의 주소와 데이터 타입의 크기를 계산하여 접근하기 때문에 빠른 접근이 가능하다. 즉, ArrayList는 검색(읽기) 측면에서는 상대적으로 빠른 속도로 찾을 수 있다. ArrayList의 장점 데이터를 순차적으로 추가하거나 삭제하는 경우 빠른 처리가 가능하다...

[Java] 자바 LinkedList 클래스 개념 정리 및 활용

LinkedList LinkedList 컬렉션 클래스는 데이터를 효율적으로 추가, 삭제, 변경 등의 동작을 하기 위해 사용한다. LinkedList는 ArrayList와는 다르게 불연속적으로 존재하며, 데이터들은 서로 연결되어 있다. 그림과 같이 LinkedList의 각 요소(node)들은 자신과 연결된 이전 요소 또는 다음 요소의 주소 값과 데이터로 구성되어 있다. LinkedList에서 데이터 삭제는 삭제하고자 하는 노드의 이전 노드가 삭제하고자 하는 노드의 다음 노드를 참조하도록 변경하는 것으로 삭제한다. 즉, 연결된 링크를 끊어 다른 노드에 다시 연결하는 방식이다. LinkedList는 배열과 같이 데이터를 이동하기 위해 복사할 필요가 없어 처리 속도가 훨씬 빠르다. LinkedList에서의 데이..

[Java] 자바 ArrayList 클래스 개념 정리 및 활용

ArrayList ArrayList는 List 인터페이스를 구현한 클래스로 컬렉션 프레임워크에서 가장 많이 사용된다. 기능적으로는 Vector와 동일하지만, 기존의 Vector를 개선한 것으로 주로 ArrayList를 사용한다. ArrayList에 객체를 추가하면 객체가 인덱스로 관리된다는 점에서 배열과 유사하다. 그러나 배열은 생성될 때 크기가 고정되며, 크기를 변경할 수 없다. 하지만 ArrayList는 저장 용량을 초과하여 객체들이 추가되면, 자동으로 저장용량이 늘어나게 된다. 또한 List 자료구조의 특성을 이어받아 데이터가 연속적으로 존재하여 순서를 유지한다. ArrayList의 생성 List 객체이름 = new ArrayList(초기 저장 용량); ArrayList를 생성하기 위해서는 저장할 ..

[Java] 자바 List<E> 컬렉션 인터페이스 정리

List List 인터페이스는 배열과 같이 객체를 일렬로 늘어놓은 구조를 가지고 있다. 객체를 인덱스로 관리하여 객체를 저장하면 자동으로 인덱스가 부여되고, 인덱스로 객체를 검색, 추가, 삭제 등의 기능을 수행할 수 있다. List 인터페이스를 구현한 클래스는 ArrayList, Vector, LinkedList, Stack 등이 있다. List 인터페이스에서 사용 가능한 메서드는 컬렉션 인터페이스의 메서드와 함께 사용이 가능하다. add(int index, Object element) 주어진 인덱스에 객체를 추가하며 반환 값은 없다. addAll(int index, Collection c) 주어진 인덱스에 컬렉션을 추가하며 그 결과를 boolean 타입으로 반환한다. set(int index, Obje..

[Java] 자바 컬렉션 프레임워크 개념 정리 (Collection Framework)

컬렉션 프레임워크란? (Collection Framework) 자바에서는 데이터를 저장하기 위해 다양한 자료 구조를 바탕으로 객체들을 효율적으로 추가, 삭제, 검색할 수 있도록 컬렉션을 만들고, 관련된 인터페이스와 클래스를 포함하여 제공한다. 이를 컬렉션 프레임워크라고 한다. 컬렉션 프레임워크가 제공하는 다양한 인터페이스와 구현 클래스를 활용하면, 보다 객체 지향적이고 재사용성 높은 코드를 작성할 수 있다. 컬렉션은 여러 데이터들의 집합을 의미한다. 즉, 여러 데이터들을 그룹으로 묶어놓은 것을 컬렉션이라 하며, 컬렉션을 다루는 데 있어 편리한 메서드들을 미리 정의해 놓은 것을 컬렉션 프레임워크라 한다. 컬렉션 프레임워크는 특정 자료 구조에 데이터를 추가, 삭제, 수정, 검색 등의 동작을 수행할 수 있는 ..

[Java] 자바 컴파일 에러와 런타임 에러

컴파일 에러(Compile Time Error) 컴파일 에러는 컴파일할 때 발생하는 에러이다. 즉, 자바 컴파일러가 에러를 감지하여 프로그램을 실행조차 하지 않는다. 이 경우 IDE에서 미리 감지하여 알려주기 때문에 상대적으로 쉽게 발견하고 수정할 수 있다. 컴파일 에러에는 주로 세미 콜론(;) 또는 괄호() 생략, 잘못된 데이터 타입, 잘못된 포맷 등 문법적인 문제인 Syntax 에러를 발생한다. public class ErrorTest { public static void main(String[] args) { for (int i = 0; i < 5; i++) { System.out.println(i) } } } java: ';' expected 다음과 같이 System.out.println(i) 구..

[Java] 자바 예외 처리(Exception Handling) 개념 정리 및 활용

Intro 프로그래밍을 하고 실행하면 수많은 에러와 예외를 마주하게 된다. 에러 또는 예외가 발생하게 되면 프로그램은 의도한 대로 작동하지 않거나 실행을 비정상적으로 종료하기도 한다. 이러한 에러와 예외들이 발생할 가능성이 있을 때, 효과적으로 처리하는 방법이 바로 예외 처리이다. 예외 처리란? (Exception Handling) 예외 처리는 코드 작성자가 예기치 않게 발생하는 에러들에 대응할 수 도록 사전에 방지하는 것이다. 예외 처리를 하면 프로그램의 비정상적인 종료를 방지하여 정상적인 실행 상태를 유지할 수 있다. 프로그램에서 에러가 발생하는 이유 에러가 발생하는 원인은 수없이 다양하다. 하지만 자주 발생하는 에러의 몇 가지 예시는 다음과 같다. 사용자의 입력 실수 네트워크 연결 끊김 메모리 공간..

[Java] 자바 래퍼 클래스(Wrapper Class) 개념 정리 및 활용

래퍼 클래스(Wrapper Class) 래퍼 클래스는 기본 타입의 데이터를 객체로 취급하여 사용(참조 변수를 사용) 하기 위해 사용한다. 예를 들어, 제네릭 같은 기본형 데이터 타입의 사용을 하지 못하나, 기본 타입의 데이터를 사용해야만 할 경우에 사용된다. 실제로, Integer와 Double와 같은 클래스는 내부에서 기본 데이터 타입을 감싸는 형태로 구현되어 있다. public final class Integer extends Number implements Comparable { ... @Native public static final int MIN_VALUE = 0x80000000; @Native public static final int MAX_VALUE = 0x7fffffff; ... } 래퍼..

[Java] 자바 제네릭(Generic)이란? 개념 정리 및 활용

Intro class Parents { private String info; Parents(String info) { this.info = info; } public String getInfo() { return info; } public void setInfo(String info) { this.info = info; } } 다음과 같은 코드가 있을 때, 문자열 변수 info의 데이터 타입은 String이다. 따라서 Parents 클래스를 통해 만들어진 인스턴스는 String 타입의 데이터를 저장해야 한다. 만약, Parents 클래스와 같은 기능을 하면서 String이 아닌 다양한 데이터 타입도 저장할 수 있도록 하려면 타입 별로 같은 내용의 클래스를 반복적으로 작성해야 할 것이다. class Par..

[Java] 자바 이넘(Enum: 열거형) 개념 정리 및 활용

Enum(열거형: Enumerated Type) Enum(이넘)은 자바에서 여러 상수들을 보다 편리하게 선언할 수 있도록 만들어진 문법 요소이다. Enum은 주로 서로 연관 있는 내용들을 한데 모아 관리하기 쉽도록 하기 위해 사용한다. 예를 들어, 계절(봄, 여름, 가을, 겨울)이나 방위(동, 서, 남, 북), 과목(국어, 영어, 수학, 사회, 과학) 등과 같이 관련 있는 내용들을 묶어서 관리할 수 있다. 자바에서 상수는 변하지 않는 값을 의미하며, final 키워드를 사용하여 선언한다. Enum은 서로 연관된 상수들의 집합으로 서로 관련 있는 변하지 않는 데이터를 다루는 데 사용한다. Enum을 사용하는 이유 JDK 1.5 이전 버전에서는 enum 문법을 지원하지 않았다. 따라서 여러 개의 상수를 사용..

반응형