[Java] Stream 생성 방법
2022. 3. 22. 20:27
프로그래밍/JAVA
Stream 생성 방법 예제 // Stream의 static 메서드 of 사용 - Stream.of(data) Stream stream = Stream.of("Java", "Lambdas", "Stream", "Example"); // Stream의 static 메서드 iterate 사용 - Stream.iterate(seed, operator) Stream.iterate(0, n -> n + 2) .limit(10) .forEach(System.out::println); // Stream의 static 메서드 generate 사용 - Stream.generate(() -> T) Stream.generate(Math::random) .limit(10) .forEach(System.out::println)..
[Java] Collection과 Stream 비교
2022. 3. 21. 20:55
프로그래밍/JAVA
Collection과 Stream 비교 Collection Stream for(int n: numbers){ ... } numbers.forEach(n -> ...) 외부반복(External Iteration) 제어 흐름 중복 발생 효율적이고 직접적인 요소 처리 지저분한 코드 유한 데이터 구조 API 내부반복(Internal Iteration) 제어 흐름 추상화 파이프-필터 기반 API 함축적인 표현 무한 연속 데이터 흐름 API 공통점 컬렉션과 스트림 모두 연속된 요소 형식의 값을 저장하는 자료구조의 인터페이스를 제공 둘 다 순서에 따라 순차적으로 요소에 접근 차이점 Collection Stream 각 계산식을 만날 때 마다 데이터가 계산됨 최종 연산이 실행 될 때에 데이터가 계산됨 자료구조 이므로 데..
[Java] 스트림(Stream)의 특징
2022. 3. 18. 20:04
프로그래밍/JAVA
스트림(Stream)과 관련된 용어 리덕션(Reduction) ✔ 대량의 데이터를 가공해 축소 하는 것 ✔ 데이터의 합계 , 평균값 , 카운팅 , 최대값 , 최소값 ✔ 컬렉션의 요소를 리덕션의 결과물로 바로 집계할 수 없을 경우에는 ? : 집계하기 좋도록 필터링 , 매핑 , 정렬 , 그룹핑의 중간 처리가 필요함 ( 스트림 파이프라인 필요성 ) 파이프라인(Pipeline) ✔ 여러 개의 스트림이 연결 되어 있는 구조 ✔ 파이프라인에서 최종 처리를 제외 하고는 모두 중간 처리 스트림 스트림(Stream)의 작업흐름 1️⃣ 스트림을 생성 2️⃣ 초기 스트림을 다른 스트림으로 변환하는 중간 연산을 지정. 여러 단계가 될 수도 있음 3️⃣ 종료 연산을 적용해서 결과를 산출. 종료 연산은 앞에서 지연된 중간 연산이..
[Mybatis] Cause: java.lang.NumberFormatException: For input string: "Y" 에러 해결 방법
2022. 3. 17. 20:48
프로그래밍/Mybatis
Error querying database. Cause: java.lang.NumberFormatException: For input string: "Y" 에러 해결 방법 Mybatis에서는 " " 큰따옴표와 ' ' 작은따옴표의 구분을 잘 해주어야 함 조건문에 " " 큰따옴표 안에 ' ' 작은 따옴표를 썼다면 오류가 날 수 있음 예시 👇 ... 아래의 예시처럼 변경해주면 오류 해결👏 오류 해결 예시 👇 ...
[Java] 스트림(Stream)이란 ?
2022. 3. 16. 20:33
프로그래밍/JAVA
스트림(Stream)의 정의 스트림은 Java8부터 추가된 컬렉션(배열 포함)의 저장 요소(Element)를 하나씩 참조해서 람다식으로 처리할 수 있도록 해주는 반복자 Stream 활용하기 클래식 자바 스타일 예시(컬렉션 활용)👇 List lowPriceProduct = new ArrayList(); // 가격이 9000원 이하인 상품만 가지고 옴 for(Product product : item) { if(store.getPrice() < 9000) { lowPriceProduct.add(product); } } // 가격 순으로 정렬 Collections.sort(lowPriceProduct, new Comparator() { @Override public int compare(Dish o1, Dish..
[Java] 함수형 인터페이스
2022. 3. 15. 20:00
프로그래밍/JAVA
함수형 인터페이스 하나의 추상 메서드를 가진 인터페이스만 람다식으로 사용 가능 👉 이러한 인터페이스를 함수형 인터페이스라고 함 익명 함수와 매개 변수만으로 구현되므로 단 하나의 메서드만을 가져야 함(두 개 이상의 메서드인 경우 어떤 메서드의 호출인지 모호해 짐) 하나의 abstract 메서드를 가지는 인터페이스 함수형 인터페이스 지정을 위해 @FunctionalInterface 이 도입됨 @FunctionalInterface 함수형 인터페이스라는 의미, 여러 개의 메서드를 선언하면 에러 @FunctionalInterface public interface Operator { public T operator(T op1, T op2); } 함수형 인터페이스 이해하기 ✔️ 람다와 익명 클래스는 다름 익명 클래스..
[Java] 람다식의 특징 및 장단점
2022. 3. 14. 20:10
프로그래밍/JAVA
람다식(Lambda Expression) 의 특징 1️⃣ 람다식 내에서 사용되는 지역변수는 final이 붙지 않아도 상수로 간주됨 2️⃣ 람다식으로 선언된 변수명은 다른 변수명과 중복될 수 없음 람다식(Lambda Expression) 의 장점 1️⃣ 코드를 간결하게 만들 수 있음 2️⃣ 식에 개발자의 의도가 명확히 드러나 가독성이 높아짐 3️⃣ 함수를 만드는 과정없이 한번에 처리할 수 있어 생산성이 높아짐 4️⃣ 병렬프로그래밍이 용이 람다식(Lambda Expression) 의 단점 1️⃣ 람다를 사용하면서 만든 무명함수는 재사용이 불가능 2️⃣ 디버깅이 어려움 3️⃣ 람다를 남발하면 비슷한 함수가 중복 생성되어 코드가 지저분해질 수 있음 4️⃣ 재귀로 만들경우에 부적합함
[Mybatis] <choose>, <when>, <otherwise> 사용법
2022. 3. 11. 20:44
프로그래밍/Mybatis
, , 사용법 java의 if~ else~ 문과 비슷함 만약 태그의 조건식중 true 반환한 것이 없다면 태그 내에 작성된 쿼리문이 실행됨 태그는 생략 가능 쿼리문1 쿼리문2 쿼리문3 쿼리문4 쿼리문5 사용 예제 👇 SELECT * FROM BLOG WHERE state = ‘ACTIVE’ AND title like #{title} AND author_name like #{author.name} REFERENCE mybatis.org/mybatis-3/ko/sqlmap-xml.html MyBatis – 마이바티스 3 | 매퍼 XML 파일 Mapper XML 파일 마이바티스의 가장 큰 장점은 매핑구문이다. 이건 간혹 마법을 부리는 것처럼 보일 수 있다. SQL Map XML 파일은 상대적으로 간단하다. 더..