Java 102

파일 출력 스트림(문자 기반 스트림)

파일 출력 스트림(문자 기반 스트림) 파일 출력 스트림(문자 기반)은 자바에서 텍스트 데이터를 파일에 쓰기 위해 사용되는 스트림이다.가장 일반적으로 사용되는 클래스는 FileWriter 이며, FileWriter 는 문자 데이터를 파일에 쓸 때 사용되며, 이 클래스는 내부적으로 파일 시스템과 통신하여 데이터를 문자 단위로 파일에 쓰게 해준다.이는 바이트 기반 스트림인 FileOutputStream 과 대비되며, 텍스트 데이터를 처리할 때는 FileWriter 가 더 적합하다.FileOutputStream : 바이너리 데이터를 파일에 쓰기에 특히 적합이미지, 비디오, 오디오 파일 쓰기,직렬화 데이터 쓰기,압축 파일 생성    시나리오 코드 1package io.file.ch06;import java.io...

Java 2024.05.31

파일 출력 스트림(바이트 기반)

버퍼를 사용하는 것은 입출력 작업에서 매우 중요한 역할을 하며, 그 원리를 이해하는 것은 데이터 처리의 효율성을 높이는 데 큰 도움이 된다. 버퍼의 사용 원리는 기본적으로 '일괄 처리' 또는 '집단 처리' 방식에 비유할 수 있다.  버퍼의 기본 원리 버퍼는 임시 저장 공간을 말하며, 데이터를 최종 목적지(파일, 네트워크, 디스플레이 등)에 쓰기 전에 일시적으로 데이터를 모아 두는 역할을 한다.  효율성 증가: 작은 데이터 조각들을 바로 전송하거나 저장하는 대신 큰 덩어리로 모아서 한 번에 처리한다. 이 방식은 특히 입출력 연산이 자주 발생하는 상황에서 유용하며, 시스템의 입출력 호출 횟수를 줄여 전체적인 성능을 향상시킨다.시스템 부하 감소: 버퍼를 사용하면 데이터를 모아 두었다가 한 번에 처리하기 때문에..

Java 2024.05.23

파일 입력 스트림(바이트 기반)

기반 스트림 (Base Stream) 기반 스트림은 데이터 소스와 직접 연결되는 스트림으로, 실제 데이터 읽기나 쓰기 작업을 수행한다. 이 스트림들은 데이터의 실제 입력 소스(파일, 메모리, 네트워크 연결 등)에 직접 연결되어 데이터를 바이트 단위로 읽거나 쓰는 기본적인 기능을 제공한다.바이트 기반 스트림: FileInputStream, FileOutputStream, SocketInputStream, SocketOutputStream 등이 있으며, 이들은 바이트 데이터를 처리한다.문자 기반 스트림: FileReader, FileWriter 등이 있으며, 이들은 문자 데이터를 처리한다.  보조 스트림 (Filter Stream) 보조 스트림은 기반 스트림 또는 다른 보조 스트림에 연결되어 사용된다. 이..

Java 2024.05.23

Map 인터페이스

Map 인터페이스Map은 키(key)와 값(value)을 연관시키는 자료구조이다. 이는 사전과 유사한 구조로, 각 키는 고유한 값을 가집니다. Java에서 Map은 인터페이스로 정의되어 있으며, 이를 구현한 여러 가지 클래스가 있다.  Map 주요 특징 키-값 저장: Map은 키(key)와 값(value)의 쌍으로 데이터를 저장한다. 각 키는 고유해야 하며, 하나의 값에만 매핑된다. 중복 키 불가: Map은 각 키가 고유해야 한다. 따라서 동일한 키를 두 번 이상 추가할 수 없다. 키의 유일성은 Map 내에서 보장된다. 순서 보장하지 않음: Map은 키-값 쌍을 저장하는데 순서를 유지하지 않는다. 따라서 Map에 저장된 순서와 데이터를 순회할 때의 순서는 일치하지 않을 수 있다.  Map 주요 기능 및..

Java 2024.05.23

Set 인터페이스

Set 인터페이스Java에서 Set 인터페이스는 java.util 패키지의 일부로, 중복을 허용하지 않는 유일한 요소들을 저장하는데 사용된다. 이 인터페이스는 컬렉션 프레임워크의 일부이며, 순서에 의존하지 않는 데이터 집합을 관리하기 위해 설계되었다.   주요 특징 중복 허용 불가: Set에 같은 요소를 추가하려고 하면, 추가가 되지 않는다. 즉, 모든 요소가 고유해야 하며, 이미 존재하는 요소를 추가할 경우 무시된다. 순서 보장하지 않음: Set은 요소들의 순서를 유지하지 않는다. 요소들이 내부적으로 어떻게 저장되고 관리되는지는 Set을 구현하는 클래스에 따라 다르다. 따라서 요소들이 추가된 순서와 Set에서 요소를 순회할 때의 순서가 다를 수 있다. 값의 유일성: Set은 각 요소의 유일성을 보장합..

Java 2024.05.21

List 인터페이스

List 인터페이스자바에서 객체를 순서대로 저장하고 관리할 수 있도록 설계된 인터페이스.자바의 java.util 패키지에 속하며, 배열이나 연결 리스트 등의 순차적 자료 구조의 구현체를 위한 메서드를 정의한다.  List 인터페이스의 주요 특징 순서 유지: List 인터페이스를 구현하는 자료 구조는 원소들이 삽입된 순서를 유지한다. 이는 원소들이 리스트 내에서 특정 위치(index)를 가지며, 이 인덱스를 통해 접근할 수 있다는 것을 의미한다. 중복 허용: List는 같은 값을 가진 원소의 중복 저장을 허용합니다. 예를 들어, 같은 값을 여러 번 리스트에 추가할 수 있으며, 이는 리스트의 크기를 증가시키고 각각의 원소는 별도의 인덱스를 갖게 됩니다. 가변 크기: List의 구현체들은 동적으로 크기가 ..

Java 2024.05.17

LinkedList 구현

LinkedList 특징 동일한 데이터 타입을 순서에 따라 관리하는 자료 구조 자료를 저장하는 노드에는 자료와 다음 요소를 가리키는 링크(포인터)가 있음 자료가 추가 될때 노드 만큼의 메모리를 할당 받고 이전 노드의 링크로 연결함 (정해진 크기가 없음) jdk 클래스 : LinkedList    하나의 요소를 저장하는 기능 설계 package structure.ch04;public class MyLinkedList { private Node head; // 요소의 맨 처음을 가리킴 private int count; // Linked list 에 몇 개의 요소가 연결되어 있는지 개수 // MyLinkedList 맨 처음 생성 시, node는 없는 상태. public MyLinkedList() { h..

Java 2024.05.14

큐(Queue) 구현하기

Queue큐 Queue는 데이터를 저장하는 선형 자료구조로,차례를 기다리는 줄이라는 의미를 가지고 있는 단어처럼 먼저 들어온 자료부터 순서대로 처리하는 방식을 말한다. 한 쪽 끝에서는 자료의 삽입 연산만 가능하고 반대쪽 끝에서는 삭제만 가능한 구조로서 선입선출(FIFO : First In First Out)의 특징을 가진다.    Queue의 특징 맨 앞(front) 에서 자료를 꺼내거나 삭제하고, 맨 뒤(rear)에서 자료를 추가 함 Fist In First Out (선입선출) 구조 일상 생활에서 일렬로 줄 서 있는 모양 순차적으로 입력된 자료를 순서대로 처리하는데 많이 사용 되는 자료구조 콜센터에 들어온 문의 전화, 메세지 큐 등에 활용됨 jdk 클래스 : ArrayList  package ..

Java 2024.05.14

배열을 활용한 Stack 구현

Stack 스택(Stack)은 데이터를 일시적으로 저장하기 위한 선형 자료구조로, "후입선출"(Last In, First Out; LIFO) 원칙을 따른다. 이 원칙은 가장 마지막에 추가된 요소가 가장 먼저 제거된다는 것을 의미한다.스택을 일상생활의 예로 설명하면, 식당에서 사용된 접시를 쌓아 두었다가 사용할 때 가장 위에 있는 접시부터 꺼내는 것과 비슷하다.    스택의 주요 연산 Push : 스택에 요소를 추가하는 연산. 스택의 맨 위에 새로운 요소를 놓는다. Pop : 스택에서 요소를 제거하는 연산. 스택의 맨 위에 있는 요소를 꺼내며, 그 요소는 스택에서 삭제된다. Peek 또는 Top : 스택의 맨 위에 있는 요소를 반환하지만, 제거하지는 않는다. 스택의 최상위 요소를 확인할 때 사용한다. I..

Java 2024.05.14

자료구조 개론

자료구조란 무엇인가? (Data Structure) 자바에서 자료구조는 데이터를 효율적으로 구성하고 조작하기 위한 방법을 제공하는 클래스와 인터페이스의 모음이다.이러한 자료구조는 다양한 요구 사항에 맞게 설계되어 있으며, 데이터를 삽입, 삭제, 검색, 정렬 등의 작업을 효율적으로 수행할 수 있도록 지원한다. 자바에서 제공하는 자료구조에는 배열, 리스트, 스택, 큐, 집합, 맵 등이 포함된다.이러한 자료구조는 다양한 상황에서 사용될 수 있으며, 프로그램의 성능과 효율성을 향상시키는데 중요한 역할을 한다.또한 자바 컬렉션 프레임워크(Collection Framework)는 다양한 자료구조를 표준화하여 제공하여, 개발자들이 더욱 쉽게 자료구조를 활용할 수 있도록 도와준다.  정리 프로그램에서 사용 할 많은 데..

Java 2024.05.09