Java 124

List 인터페이스 - 6

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

컬렉션 프레임워크(collection framework)란?

자바에서 컬렉션 프레임워크(collection framework)란 다수의 데이터를 쉽고 효과적으로 처리할 수 있는 표준화된 방법을 제공하는 클래스의 집합을 의미합니다. 즉, 데이터를 저장하는 자료 구조와 데이터를 처리하는 알고리즘을 구조화하여 클래스로 구현해 놓은 것입니다. 이러한 컬렉션 프레임워크는 자바의 인터페이스(interface)를 사용하여 구현됩니다. ● 프로그램 구현에 필요한 자료구조(Data Structure)를 구현해 놓은 JDK 라이브러리 이다.● java.util 패키지에 구현되어 있음● 개발에 소요되는 시간을 절약하면서 최적화 된 알고리즘을 사용할 수 있음● 여러 구현 클래스와 인터페이스의 활용에 대한 이해가 필요함

LinkedList 직접 구현해보기 - 5

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

큐(Queue) 구현하기 - 4

💡 학습 목표Queue 에 대한 개념을 알아 보자. ****2. 배열을 활용한 큐(Queue) 구현하기배열을 활용한 큐를 순환 구조로 수정해 보기 1. Queue 에 대한 개념을 알아 보자.큐 Queue는 데이터를 저장하는 선형 자료구조로, 차례를 기다리는 줄이라는 의미를 가지고 있는 단어처럼 먼저 들어온 자료부터 순서대로 처리하는 방식을 말한다.한 쪽 끝에서는 자료의 삽입 연산만 가능하고 반대쪽 끝에서는 삭제만 가능한 구조로서 선입선출(FIFO : First In First Out)의 특징을 가진다.  Queue의 특징맨 앞(front) 에서 자료를 꺼내거나 삭제하고, 맨 뒤(rear)에서 자료를 추가 함Fist In First Out (선입선출) 구조일상 생활에서 일렬로 줄 서 있는 모양순차적으로 ..

배열을 활용한 Stack 구현해보기 - 3

💡 학습 목표Stack 에 대한 기본적인 개념을 살펴 보자.배열을 활용한 Stack 구현하기 1. Stack 에 대한 기본적인 개념을 살펴 보자.스택(Stack)은 데이터를 일시적으로 저장하기 위한 선형 자료구조로, "후입선출"(Last In, First Out; LIFO) 원칙을 따릅니다. 이 원칙은 가장 마지막에 추가된 요소가 가장 먼저 제거된다는 것을 의미합니다. 스택을 일상생활의 예로 설명하면, 식당에서 사용된 접시를 쌓아 두었다가 사용할 때 가장 위에 있는 접시부터 꺼내는 것과 비슷합니다.    스택의 주요 연산Push: 스택에 요소를 추가하는 연산입니다. 스택의 맨 위에 새로운 요소를 놓습니다.Pop: 스택에서 요소를 제거하는 연산입니다. 스택의 맨 위에 있는 요소를 꺼내며, 그 요소는 스택..

Java 배열을 활용한 객체 만들기 - 2

💡 학습 목표배열에 대한 기본 개념 복습배열을 활용한 객체를 만들어 보자. 1. 배열에 대한 기본 개념 복습   동일한 데이터 타입을 순서에 따라 관리하는 자료 구조정해진 크기가 있음(배열)요소의 추가와 제거시 다른 요소들의 이동이 필요함배열의 i 번째 요소를 찾는 인덱스 연산이 빠름jdk 클래스 : ArrayList, Vector  removeElement 에 버그 존재 하는 상황 - stack 자료구조 구현시 수정 예정 package structure;/** * 배열을 활용 클래스를 설계 물론 --> 이미 자바 표준 API 개발자들이 잘 만들어 준 클래스 들이 존재 한다. 하지만 직접 기능을 * 확장해서 만들어 보자. */public class TencoIntArray { int[] intArr; ..

자료구조 개론 - 1

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

1:1 양방향 통신(채팅 기본 기능 구현) - 24

💡 멀티 스레드 활용양방향 통신을 지속적으로 수행하기 위해 서버와 클라이언트 모두에서 키보드 입력을 받아 상대방에게 데이터를 보내고 받을 수 있도록 스레드와 while문을 활용하여 코드를 작성해봅시다. 서버 측 코드ServerSocket 을 생성하고 클라이언트의 연결을 기다립니다.BufferedReader 를 사용하여 클라이언트로부터 메시지를 읽고, PrintWriter를 사용하여 클라이언트에게 메시지를 보냅니다.키보드 입력을 받기 위해 BufferedReader를 사용합니다.클라이언트로부터 데이터를 읽는 스레드와 키보드 입력을 클라이언트로 보내는 스레드를 각각 실행합니다.  package ch04;import java.io.BufferedReader;import java.io.IOException;i..

1:1 양방향 통신 - 23

서버측 코드 작성 인풋스트림, 아웃풋 스트림이 둘다 필요하다. import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.ServerSocket;import java.net.Socket;public class ServerFile { public static void main(String[] args) { // 준비물 // 1. 서버 소켓이 필요하다. // 2. 포트 번호가 필요하다. (0 ~ 65535 까지 존재) // 2.1 잘 알려진 포트 번호 : 주로 시스템 레벨 - ..

1:1 단방향 통신 (클라이언트측) - 22

import java.io.IOException;import java.io.PrintWriter;import java.net.Socket;public class ClientFile { public static void main(String[] args) { // 클라이언트 측 준비물 // 1. 서버측 IP주소와 포트 번호가 필요하다. // 2. 서버측 소켓과 연결될 소켓이 필요 하다. Socket socket = null; try { socket = new Socket("localhost", 5001); PrintWriter writer = new PrintWriter(socket.getOutputStream(), true); writer.print("안녕 반가워~");..