본문 바로가기

개인적으로 공부한 것을 정리해 놓은 블로그입니다 틀린 것이 있으면 댓글 부탁 드립니다!


반응형

JAVA

(23)
JAVA 스터디 24 - 스트림(Stream) 자바에서는 다양한 데이터 소스를 표준화된 방법으로 다루기위해 이전의 데이터소스들(List,Set,Map, 배열 등.)은 각각 성격이 달라 데이터를 다루는 방법이 모두 달랐다. JDK 1.8버전 이후부터 추가된 Stream은 데이터를 다루는 방법을 표준화 한 기능이다 구현방식은 위의 그림과 같다 데이터소스는 스트림으로 변환되고 중간 연산은( n번가능) 최종 연산(한번)을 거쳐 결과가 만들어진다 . 스트림의 특징 -스트림은 데이터소스 (원본) 데이터를 읽기만할 뿐 (Read Only) 변경지 않는다. List list = Arrays.asList(3,1,5,1,4,2); List sortedList = list.stream().sorted().collect(Collectors.toList()); //[3, ..
JAVA 스터디 23 - 메서드 참조(method reference) 메서드 참조 ? 하나의 메서드만 호출하는 람다식은 '메서드 참조' 로 더 간단히 할 수 있다. static 메서드 참조 //1.문자열 s 를 파라미터로 받아서 Int로 변환하여 반환하는 메서드 Integer method(String s){ return Integer.parseInt(s); } //2.위 메서드의 람다식 표현 Function func = (s)->Integer.parseInt(s); //3.위 람다식을 메서드 참조 표기 //입력값 출력값에 대한 정보가 Function의 제네릭에 들어 있기 때문에 //2번의 (s)를 지우고 아래처럼 사용할 수 있다 . //메서드만 참조해주면 알아서 타입을 잡아준다. Function func = Integer::parseInt 메서드 참조가 이해가 안간다면 메..
JAVA 스터디 22 - 컬렉션 프레임웍과 함수형 인터페이스 인터페이스 메서드 설명 Collection boolean removeIf(Predicate filter) 조건에 맞는 요소를 삭제 List void replaceAll(UnaryOperator operator) 모든 요소를 변환하여 대체 Iterable void forEach(Consumer action) 모든 요소에 작업 action 수행 Map V compute(K key,BiFunctionf) 지정된 키의 값에 작업 f를 수행 V computeIfAbsent(K key , Function f) 키가 없으면 , 작업 f 수행 후추가 V computeIfPresent(K key , BiFunction) f 지정된 키가 있을 때, 작업 f 수행 V merge(K key , BiFunction f) 모든 ..
JAVA 스터디 21 - Predicate의 결합 predicate는 조건식을 정의할 때 사용하는 함수형 인터페이스다 연산자의 && (and) , || (or) 와 같이 and(), or() , negate()로 두 Predicate를 하나로 결합(default 메서드) 할 수 있다. 예제 코드 import java.util.function.Predicate; public class PredicateExam { public static void main(String[] args) { //세개의 Predicate 를 구현하였다. Predicate a = i->ii i%2 == 0 ; //negate() 반대로 만든다 i=100 으로 바꾼다. //연산자의 !와 같다. Predicate notA = a.negate(); //i>=100 && i=100 && ..
JAVA 스터디 20 - 람다식 (Lamda Expression) 람다식이란? 자바는 원래 OOP 언어이지만 JDK 1.8 부터 함수형 언어의 기능을 포함 했다. 람다식의 특징 1.함수 (메서드) 를 간단한 식으로 표현하는 방법이다. 2. 익명함수 (이름 없는 함수 , anonymous function) 일반식 : int max(int a , int b){ return a>b ? a:b;} 람다식 : (int a,int b)->{return a > b ? a : b;} 화살표 함수를 블록앞에 추가 람다식 : (int a,int b)->{return a > b ? a : b;} a > b ? a : b //a 혹은 b가 반환 타입이 된다 3.매개변수의 타입이 추론 가능하면 생략가능(대부분의 경우 생략 가능하다.) 람다식 : ( a , b )-> a > b ? a : b ..
JAVA 스터디 18 - 애노테이션 애노테이션 정의하는 방법 @retention @target @documented 애노테이션 프로세서 annotation 이란 ? -프로그래밍 언어에 영향을 미치지 않으며 ,유용한 정보를 특정 프로그램에게 제공하는 것. annotation의 특징 -'@' 로시작된다. -컴파일 된 프로그램의 동작을 변경하지 않는다. -메타 데이터를 프로그램 요소(인스턴스 변수 , 생성자 ,메서드 ,클래스 등..)에 연결하는 방법을 제시한다. -코드 라인 수를 줄이고 , 선언으로 해결 한다 -소스코드의 비지니스 로직에는 영향을 주지 않지만 ,해당 타겟에 영향을 주거나 소스코드의 구조를 변경할 수 있다. -소스 코드에 메타데이터를 삽입하는 것이기 때문에 가독성 뿐만 아니라 ,전체적인 소스코드를 구성하는데 도움된다. annota..
JAVA 스터디 17 - ENUM enum 정의하는 방법 enum이 제공하는 메소드 (values()와 valueOf()) java.lang.Enum EnumSet enum 이란 ? enum이란 상수 그룹을 나타내는 특수 "클래스"이다 enum의 특징 1.내부적으로 enum 은 class를 사용하여 구현된다. enum FoodType{ KOREAN,JAPANESE,AMERICAN,ITALY; } //내부적으로는 아래와 같이 구현된다. class FoodType{ public static final FoodType KOREAN = new FoodType(); public static final FoodType JAPANESE = new FoodType(); public static final FoodType AMERICAN = new Fo..
JAVA 스터디 15 - 예외처리 자바에서 예외 처리 방법과 예약어의 개념 에러(error)와 예외(exception) 차이 자바 프로그램을 작성할 떄 자바 문법에 맞지 않게 코드를 작성하고 컴파일하려고 하면, 자바 컴파일러는 문법 오류를 발생시킨다. 또한 , 자바 문법에 맞게 작성되었다 하더라도 프로그램이 실행되면서 예상하지 못한 오류가 발생할 수 있다 이렇게 컴퓨터 시스템이 동작하는 도중에 예상하지 못한 사태가 발생하여 실행 중인 프로그램이 영향을 받는 것을 오류(error)와 예외(exception) 두 가지로 구분할 수 있다. 에러(error)는 시스템 레벨에서 프로그램에 심각한 문제를 야기하여 실행 중인 프로그램을 종료시킨다. 이러한 오류는 개발자가 미리 예측하여 처리할 수 없는 것이 대부분이므로 , 오류에 대한 처리는 할 수 ..

반응형