내일배움캠프 11일차 TIL _ 3주 3일차

2024. 5. 1. 23:10TIL Java

 

  • 오늘 있었던 일
    • 들었던 강의 중 이해하기 어려웠던 부분을 다시 들었다.
  • 복습
더보기

스트림 ( Stream )

  • Stream API
    • 과정
      • 생성
        • 스트림 객체생성
        • 제사용이 불가하니 필요시 제작해야함
      • 가공
        • 데이터로 가공
        • 연산 결과를 Stream으로 반환
      • 결과 제작
        • 결과를 만들기 위한 최종 연산
        • 제사용 불가

 이해하기 어려웠던건 2-2로 결과를 반환한다는 게 뭔지 몰랐지만 복습으로 몇 번 써보고 나니 알게 됐다.

 참고자료

 

[Java] Stream API에 대한 이해 - (1/5)

1. Stream API에 대한 이해 [ Stream API에 대한 소개 ] Java는 객체지향 언어이기 때문에 기본적으로 함수형 프로그래밍이 불가능하다. (함수형 프로그래밍에 대해 이해가 부족하다면 이 글을 참고하길

mangkyu.tistory.com

람다식

  • 람다식의 특징
    • 람다 대수는 이름을 가질 필요가 없다. - 익명 함수 (Anonymous functions)
      • 익명함수란 말그대로 함수의 이름이 없는 함수입니다. 명함수들은 공통으로 일급객체(First Class citizen)라는 특징을 가지고 있습니다.
        • 일급 객체란 일반적으로 다를 객체들에 적용 가능한 연산을 모두 지원하는 개체를 가르킵니다. 함수를 값으로 사용 할 수도 있으며 파라메터로 전달 및 변수에 대입 하기와 같은 연산들이 가능합니다.
  • 장단점
    • 장점
      • 코드 간결화
        • 불필요한 반복문의 삭제가 가능하며 복잡한 식을 단순하게 표현할 수 있다.
      • 지연연산 
        • 지연연상을 수행 함으로써 불필요한 연산을 최소화
      • 병렬처리 
        • 멀티 쓰레드로 병렬처리 가능
    • 단점
      • 호출이 까다로움
      • 스트림사용시 반복문의 성능하락 위험성
  • 표현법
    •  ( -> ) 으로 사용함
    • 단일 실행문일시 중괄호{} 생략가능
    • 리턴 실행시 중괄호{} 생략 불가능
() -> {}
// 단일 실행시 중괄호 제거가능
() -> 99
// return 시제거불가
() -> { return 1; }


// 단축 과정
(int a) -> a+5
(a) -> a+5
a -> a+5

// 리턴시 중괄호 제거불가
a -> { return a+5; }


//변수와 같이 선언하지 않은 값은 사용 불가능
(num1, int num2) -> num1+num2
// 옳은값
= (int num1, int num2) -> num1+num2

 

참고자료

 

[Java] 람다식(Lambda Expression)과 함수형 인터페이스(Functional Interface) - (2/5)

1. 람다식(Lambda Expression) 이란? Stream 연산들은 매개변수로 함수형 인터페이스(Functional Interface)를 받도록 되어있다. 그리고 람다식은 반환값으로 함수형 인터페이스를 반환하고 있다. 그렇기 때문

mangkyu.tistory.com

 

  • 알고리즘 어려웠던 것
더보기

 행렬의 덧셈

        int a = arr1.length;
        int b = arr1[0].length;

        int[][] answer = new int[a][b];

        for (int i = 0; i < a; i++) {
            for (int j = 0; j < b; j++) {
                answer[i][j] = arr1[i][j] + arr2[i][j];
            }
        }

        System.out.println(Arrays.deepToString(answer));
  • 배열은 이제 자주하기도 했고 문제도 많이 풀어서 할만하다 생각했는데 2차원은 오랜만이라 어떻게 풀지 한참을 고민하고 여러 수를 써봤는데 결국 처음으로 돌아왔다. 컬렉션 말도 배열도 복습해봐야겠다.

 10 진수 -> n진수

 System.out.println("10진수 -> 2진수");
        System.out.println(Integer.toBinaryString(a));
        System.out.println(Integer.toString(a,2));

		// 16진수 이전까지는 동일 방법

        System.out.println("10진수 -> 7진수");
        System.out.println(Integer.toString(a,7));

        System.out.println("10진수 -> 16진수");
        System.out.println(Integer.toString(a,16));
        System.out.println(Integer.toHexString(a))
        
        // 10 진수로 바꾸는 방법
        
System.out.println("2진수 -> 10진수");
        System.out.println(Integer.parseInt(a,3));

        System.out.println("3진수 -> 10진수");
        System.out.println(Integer.parseInt(a,3));

        System.out.println("4진수 -> 10진수");
        System.out.println(Integer.parseInt(a,4));

        System.out.println("5진수 -> 10진수");
        System.out.println(Integer.parseInt(a,5));
  • 이런것도 있구나 하고 신기했다, 결국 모든 값은 바이트 치완값이니 필요할듯 하다 

 

 


당일 회고

  • 자바의 복습 및 정리는 오늘까지다. 이제 더 배울 시간이다.