2024/10 31

Java 스트림(Stream)

📢 Stream(스트림) - 실제 입력(출력)되는 데이터의 흐름.  - 파이프라인으로 데이터가 흘러가는 흐름의 개념  - 스트림은 자료에 스트림을 생성하여 연산(복사본)  - 스트림 연산은 연산을 다 수행하면 소모됨.(1회성)  - 기존 자료를 복사하여 스트림을 구성하기 때문에 기존 자료의 변경을 유발하지 않음.📢 Stream(스트림)용 연산이 별도 존재중간연산최종연산메서드를 이어서 사용할 수 있음.distinct() : 중복제거filter() : 조건에 맞는 자료만 다음 스트림으로 이동limit() : 스트림의 일부를 잘라냄skip() : 스트림의 일부를 건너뜀sorted() : 정렬 ...map() : 새로운 형태로 변경 mapToInt() / mapToLong() 스트림의 최종 결과 연산 (마지..

백엔드/Java 2024.10.30

Java 람다(Lambda)

- Lambda + Stream => 람다와 스트림 - javaScript arrowFunction(화살표함수)와 비슷한 형태 - Lambda : 람다식 (식을 단순하게 표현하는 방법)                  외부 자료의 부수적인 영향(side effect)을 주지 않도록 구현하는 방법 - Stream : 자료의 대상과 관계없이 동일한 연산을 수행할 수 있도록 해주는 반복자 - 메서드 체이닝 기법을 사용 - Lambda functions : 익명클래스를 사용하여 쓰는 함수람다식의 장점람다식의 단점- 코드 간결성- 병렬처리 가능- 불필요한 연산 최소화- 가독성이 떨어짐- 반복문 사용시 성능 저하 - 람다의 표현식// javaScriptconst name = ( ) => { } //java( 매개변수..

백엔드/Java 2024.10.29

SQLD(SQL-Developer) (6)

💙 식별자 구분(대체 여부에 따른)1️⃣ 본질식별자- 업무에 의해 만들어지는 식별자(꼭 필요한 식별자) 2️⃣ 인조식별자- 인위적으로 만들어지는 식별자(꼭 필요하지 않지만 관리의 편의성 등의 이유로 인위적으로 만들어지는 식별자)- 본질식별자가 복잡한 구성을 가질때 인위적으로 생성- 주로 각 행을 구분하기 위한 기본키로 사용되며 자동으로 증가하는 일련번호 같은 형태임 예제) 주문과 주문상세에 대한 엔터티 설계 과정을 예를 들어보자.주문이 들어오면 주문 엔터티에는 (주문번호 + 고객번호)를 저장, 이 때 PK는 주문번호이다.주문상세에는 각 주문별로 어떤 상품이, 언제, 몇 개 주문됐는지 등을 기록한다. ※ 주문상세 테이블 설계 시 다음과 같은 식별자를 고려할 수 있다. 1. PK : 주문번호 + 상품번호로..

자격증/SQLD 2024.10.28

Java 제네릭(Generic)

🔷 제네릭(Generic)이란?- 데이터의 타입을 나중에 확정하는 기법 - 클래스나 메서드를 선언할 때 어떤 데이터가 올지 확신이 없다면, 제네릭 타입으로 구현 => 나중에 객체 생성시 타입을 확정하여 구현 - 객체의 타입을 컴파일 할 때 체크할 수 있어서 안정성을 해치지 않는 선에서 적당히 형변환이 가능한 기법   👉🏻 안정성 - 의도하지 않은 타입의 객체가 저장되는것을 막는 것. //객체 구현시 타입을 적어서 처리 (안써도 가능)List> list = new ArrayList();int id = 1;String name = "햄버거";int price = 5000;Sale s = new Sale(id, name, price);list.add(s);list.add(new Sale(2, "콜라", ..

백엔드/Java 2024.10.26

Java로 상품 관리 시스템 구현(2)

- 간단한 상품 관리 시스템(키오스크)- menu 1.메뉴추가|2.메뉴삭제|3.메뉴수정(가격수정) 4.메뉴보기(전체메뉴보기)|5.주문|6.주문내역출력(영수증) 7.종료 🔷 구조SaleMenu: 메뉴 항목을 정의SaleOrder: 주문 정보를 담는다.SaleController: 메뉴와 주문을 관리SaleMain: 메인. (시작점)   SaleMenu 클래스는 제품 ID, 제품명, 가격을 속성으로 가지고 있다.package day08;public class SaleMenu {// Menu Class 생성// 제품ID// 제품명// 가격 private int productId; private static int idCnt = 0; private String productName; privat..

백엔드/Java 2024.10.25

SQLD(SQL-Developer) (5)

💙 관계(Relationship)의 개념- 엔터티의 인스턴스 사이의 논리적인 연관성- 엔터티의 정의, 속성 정의 및 관계 정의에 따라서도 다양하게 변할 수 있음- 관계를 맺는다는 의미는 부모의 식별자를 자식에 상속하고, 상속된 속성을 매핑키(조인키)로 활용     -> 부모, 자식을 연결함 부서가 먼저 존재하고, 그 다음에 사원이 존재할 수 밖에 없기 때문에 부서가 부모, 사원이 자식 테이블이 될 텐데, 관계를 맺는다는 것은 부서테이블에서의 기본키(부서번호)를 상속하는 것.  사원 테이블과 부서 테이블을 연결한다고 하면, 부서번호가 매핑키(조인키)가 되는 것. 💙 관계(Relationship)의 분류- 관계는 존재에 의한 관계와 행위에 의한 관계로 분류- 존재 관계는 엔터티 간의 상태를 의미  ex)..

자격증/SQLD 2024.10.24

Java로 단어장 구현

- 단어장 프로그램 작성 - menu - 1.단어등록|2.단어검색|3.단어수정|4.단어출력|5.단어삭제|6.종료 - WordController 메서드 구현 - map을 이용하여 단어등록 - 기본단어 등록(5가지 등록) - main 에서 메뉴 반복처리- 프로그램 구성  👉🏻 WordMain : 사용자와의 상호작용  👉🏻 WordController : 단어장 데이터 관련 모든 작업 🔷 WordMain 클래스 - 메뉴를 통해 원하는 작업 선택. 각 메뉴에 맞는 메서드를 호출해서 단어장 기능을 실행package day08;import java.util.Scanner;public class WordMain { public static void main(String[] args) { Sc..

백엔드/Java 2024.10.23

Java TreeSet

🔷 TreeSet TreeSet은 정렬이 가능한 Set으로, 중앙 노드를 기준으로 작은 값은 왼쪽, 큰 값은 오른쪽에 저장됨. 이를 통해 자동으로 정렬된 상태로 데이터를 유지. 🔷 실습(1)TreeSet을 이용하여 Lotto 번호 6개를 랜덤으로 넣기package day08;import java.util.HashSet;import java.util.Random;import java.util.Set;import java.util.TreeSet;public class TreeSet01 { public static void main(String[] args) { // 정렬이 가능한 Set // 중앙 노드를 기준으로 작은 값이 들어오면 left, 큰값이 들어오면 right // TreeSet을 이용하여..

백엔드/Java 2024.10.22

Java Map

🔷 Map- 값을 2개 쌍으로 저장. key / value   👉🏻    key: 홍길동  / value: 70           key: 김영이 / value: 87- key : 중복불가능, value : 중복가능 - key가 index 대용 - index가 없으면 정렬X, 중복X - HashMap을 가장 많이 사용 Map클래스,클래스> map = new HashMap클래스, 클래스>(); - map은 값이 2개이기 때문에 향상된 for문 / iterator 사용불가 - map => key만 분리 => set으로 구성 후 출력list, set  =>  add() : 추가 map  =>  put() : 추가 keySet() : 키를 기준으로 값을 가져오는 것이 가능 get(key) : key에 해당..

백엔드/Java 2024.10.21

Java set

🔷 Set중복 허용하지 않음: 동일한 값은 하나만 저장순서 보장하지 않음: 저장된 순서와 출력되는 순서는 다를 수 있다.인덱스 없음: List와 달리 인덱스 X🔷 HashSet HashSet : 대표적인 SetSet set = new HashSet();set.add("a");set.add("b");set.add("c");set.add("a"); // 중복된 값은 저장되지 않음set.add("b");set.add("c");System.out.println(set);중복된 값은 저장 되지 않고, a,b,c만 출력 됨. 🔷 Set 출력하기set은 index가 없어서 get(i) / set(index, value) 없음. 대신,두 가지 방법으로 출력 가능 향상된 for문 for (String s : set..

백엔드/Java 2024.10.20