Java 164

2024.05.13 Data Structure(자료구조) Map 인터페이스

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

Java 2024.05.13

2024.05.13 Java 유용한 클래스 Thread에 wait와 notify

Thread --> 하나의 작업에 단위Thread  프로세스 --> 여러개의 쓰레드를 가질 수 잇다.멀티 쓰레딩 프로그래밍 하나의 쓰레드가 공유 자원에 접근할 때각각에 쓰레드는 자신만에 Stack 영역을 가진다. "레이스 컨디션널 " --> 의도하지 않는 잘못된 흐름이 발생 ...해결방법 --> 동기화  임계영역 : 공부하기 ! 💡 **학습 목표**1. 스레드 동기화 이해: `synchronized` 블록을 사용하여 여러 스레드가 공유 자원에 동시에 액세스하지 않도록 관리합니다. 이는 데이터 일관성과 스레드 안전을 유지하는 핵심 개념입니다.2. `wait()`와 `notify()` 메소드의 사용: 이 두 메소드를 사용하여 스레드 간의 통신을 구현합니다. `wait()`를 호출하는 스레드는 특정 조건이 ..

Java 2024.05.13

2024.05.10 Data Structure(자료구조) Set 인터페이스

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

Java 2024.05.10

2024.05.09 자료구조(Data Structure) List 인터페이스

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

Java 2024.05.09

2024.05.09 자료구조(Data Structure) 컬렉션 프레임워크

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

Java 2024.05.09

2024.05.08 자료구조(Data Structure) LinkedList 구현해보기

학습 목표 1. LinkedList 에 특징을 알아 보자 2. LinkedList 구현해 보기 LinkedList 특징동일한 데이터 타입을 순서에 따라 관리하는 자료 구조자료를 저장하는 노드에는 자료와 다음 요소를 가리키는 링크(포인터)가 있음자료가 추가 될때 노드 만큼의 메모리를 할당 받고 이전 노드의 링크로 연결함 (정해진 크기가 없음)jdk 클래스 : LinkedList       하나의 요소를 저장하는 기능 설계 package structure.ch04;public class Node { private String data; // 자기 자신을 참조하는 것 // 자기 참조 관계 // 정의: 자기 참조는 객체가 자신과 같은 타입의 다른 객체를 가리키는 경우를 말한다. // 용도: 연결 리스트(L..

Java 2024.05.08

2024.05.07 Swing 프로젝트 bubble - 10 (적군 만들기)

package bubble.test.ex10;public enum EnemyWay { LEFT, RIGHT} Enemy 클래스 설계 package bubble.test.ex10;import javax.swing.ImageIcon;import javax.swing.JLabel;public class Enemy extends JLabel implements Moveable { BubbleFrame mContext; // 살아 있는 상태 0, 물방울에 갇힌 상태 1 private int state; // 객체 초기값 0 // 적군에 좌표값 위치 상태 private int x; private int y; private ImageIcon enemyR, enemyL; // 움직임의 상태 private boolea..

Java 2024.05.07

Context 공부하기

실행 시점 개념 BubbleFrame 객체가 생성main 함수new BubbleFrame()--> 플레이어, 백그라운드 플레이어   ----> 버블--------------------------------------실행 시점에 따라서 풀리지 않는 동작들이 있다.버블 프레임에 기능플레이어 기능은 다르다. 실행 시점플레이어가 버블을 생성해서 공격--> JFrame이 들고있는 프레임 add() 메서드를 호출해야 JFrame 기능인 add() 메서드를 호출하기 위해서--> player(JFrame mContext)player.add(button1);A a = new A() // heap 객체에 생성된 접근할 수 있는 주소값a.init();---------------------BubbleFrame 클래스안에 멤버..

Java 2024.05.07

2024.05.07 Swing 프로젝트 bubble - 9 (버블 생성 동작 수정)

Bubble 코드 수정package bubble.test.ex09;import javax.swing.ImageIcon;import javax.swing.JLabel;public class Bubble extends JLabel implements Moveable { // 의존성 컴포지션 관계 private Player player; // 포함관계 private BackgroundBubbleService backgroundBubbleService; private int x; private int y; // 움직임 상태 private boolean left; private boolean right; private boolean up; // 적군을 맞춘 상태 private int state; // 0번은 (기..

Java 2024.05.07

2024.05.07 Swing 프로젝트 bubble - 8 (물방울 벽 감지)

물방울 벽 감지 메서드로 설계햇음 (쓰레드 사용 안함)package bubble.test.ex08;import java.awt.Color;import java.awt.image.BufferedImage;import java.io.File;import java.io.IOException;import javax.imageio.ImageIO;public class BackgroundBubbleService { private BufferedImage image; private Bubble bubble; // 연관 관계 (생성자 의존 주입) // 생성자 public BackgroundBubbleService(Bubble bubble) { this.bubble = bubble; try { image = Im..

Java 2024.05.07