본문 바로가기

자바(JAVA)
(52)
[자바(Java)] 스트림(stream) ※함수형 프로그래밍(스트림 사용) vs 일반 절차적 프로그래밍 1. 함수형 프로그래밍에서는 변수 변이를 피한다. > 값이 변하는 변수를 굳이 넣지 않는다. //함수형 private static int fpSum(List numbers) { return numbers.stream().reduce(0, (number1, number2) -> number1 + number2); } //절차적 private static int normalSum(List numbers) { int sum = 0; for(int number:number) { sum += numbers; } return sum; } 2. 함수형 프로그래밍은 무엇을 할지에 중점을 둔다. // 스트림(stream) - 다양한 데이터 소스를 표준화된 방..
[자바(Java)] 람다식 // 함수형 인터페이스 - 람다식 제공 원리 - 평범한 인터페이스 - 목적: 람다식을 저장하기 위해서 만들어진 인터페이스 1. 표준 API 함수형 인터페이스 > JDK 제공 2. 사용자 정의 함수형 인터페이스 > 개발자가 선언 package com.sorrel012.functionalprogramming; import java.util.List; import java.util.function.Consumer; import java.util.function.Function; import java.util.function.Predicate; //Stream filter(Predicate
[자바(Java)] 쓰레드(Thread) // 쓰레드(thread) - 프로세스 내에서 실제 작업을 수행. 모든 프로세스는 최소한 하나의 쓰레드를 가지고 있음. ~ 프로세스: 실행중인 프로그램. 자원과 쓰레드로 구성됨. - main 쓰레드 : main 메서드의 코드를 수행하는 쓰레드 - 사용자 쓰레드 / 데몬 쓰레드 ~ 실행중인 사용자 쓰레드가 하나도 없을 때 프로그램 종료. // 멀티쓰레드 - 둘 이상의 쓰레드 - 장점 ① 시스템 자원을 보다 효율적으로 사용할 수 있음. ② 사용자에 대한 응답성이 향상됨. ③ 작업이 분리되어 코드가 간결해짐. - 단점 ① 동기화에 주의해야 함. ② 교착상태가 발생하지 않도록 주의해야 함. ③ 각 쓰레드가 효율적으로 고르게 실행될 수 있게 해야 함. // 쓰레드의 구현 및 실행 - 쓰레드를 생성한 후에 star..
[자바(Java)] 애너테이션 // 애너테이션(Annotation) - 주석처럼 프로그래밍 언어에 영향을 미치지 않으며 유용한 정보 제공함. @Override : 오버라이딩을 올바르게 했는지 컴파일러가 체크하게 함. class Parent { void parentMethod() {} } public class Ex06 extends Parent { @Override void parentMethod() {} } @Deprecated : 앞으로 사용하지 않을 것을 권장하는 필드나 메서드에 붙임. @Deprecated public int getDate() { return normalize().getDayOfMonth(); } @FunctionalInterface : 함수형 인터페이스에 붙이면, 컴파일러가 올바르게 작성했는지 체크함. @Fu..
[자바(Java)] 열거형(enum) //열거형(enums) - 관련된 상수들을 같이 묶어 놓은 것. - Java는 값과 타입을 모두 체크함. - 열거형 정의 enum 열거형명 { 상수명1, 상수명2, ... } - 열거형 상수의 비교에 == | compareTo() 사용 가능 // 와 같은 비교 연산자는 사용xx // 0 1 2 3 enum Direction { EAST, SOUTH, WEST, NORTH } public class Ex04 { public static void main(String[] args) { Direction d1 = Direction.EAST; //열거형타입.상수이름 // 가장 많이 사용 Direction d2 = Direction.valueOf("WEST"); Direction d3 = Enum.va..
[자바(Java)] 제네릭(Generics) // Generics - 컴파일 시 타입을 체크해 주는 기능 - 장점: 타입 안정성 제공, 형변환할 필요 없음. ArrayList list = new ArrayList(); list.add(new Integer(3)); Integer i = list.get(0); //형변환 필요 x - 여러 타입을 저장하고 싶으면 사용 // 꺼낼 때 형변환 필요! ArrayList list = new ArrayList(); list.add(10); list.add("30"); Integer i = (Integer)list.get(0); // 형변환 필요 String i = (String)list.get(1); // 형변환 필요 class Box { } └ Box : 지네릭 클래스. 'T Box' | 'T의 Box' 라고..
[자바(Java)] Collections // Collections - 컬렉션과 관련된 메서드(static)를 제공함. - import static java.util.Collections.*; import java.util.ArrayList; import java.util.List; import static java.util.Collections.*; public class Ex16 { public static void main(String[] args) { List list = new ArrayList(); System.out.println(list); addAll(list, 1,2,3,4,5); System.out.println("값 추가 후 = " + list + "\n"); rotate(list, 1); // 오른쪽으로 한 칸씩 이동(오..
[자바(Java)] Set //Set : 각 원소가 유일해야 함. - HashSet : 순서는 상관없을 때 사용. 가장 효율적. - LinkedHashSet: 삽입 순서대로 저장됨. - TreeSet: 정렬 기준에 맞춰 저장됨(오름차순) package collections; import java.util.HashSet; import java.util.LinkedHashSet; import java.util.List; import java.util.Set; import java.util.TreeSet; public class SetRunner { public static void main(String[] args) { List characters = List.of('A', 'Z', 'A', 'B', 'Z', 'F'); Set tre..