Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Tags more
Archives
Today
Total
관리 메뉴

어? 이게 되네

2022.06.30. 목요일 이공계 전문기술 연수사업 (제네릭, 람다식, 스트림) 본문

TIL

2022.06.30. 목요일 이공계 전문기술 연수사업 (제네릭, 람다식, 스트림)

토끼귀에진주귀걸이 2022. 6. 30. 17:03

오늘 배운 것

제네릭 - 컬렉션 프레임워크를 쓸 때 자료형을 명시함

wrapper 클래스 ( 기본 자료형을 객체화 시켜주는 클래스)

boolean Boolean

char Character

byte Byte

short Short

int Integer

long Long

float Float

double Double

 

람다식

모던스크립트에서 이름없는 함수, 화살표 함수를 사용한 것처럼

자바에서도 이름없는 함수나 화살표 함수를 사용할 수 있는데 이것을 람다식이라고 함!

 

쓰레드

가능하면 두 개 이상의 메소드가 동시에 실행되도록 스케쥴링 해주는 기술

(멀티쓰레드)

 

class MyThread extends Thread{

   public void run(){

      ~~~~

   }

}

 

MyThread a = new MyThread();

MyThread b = new MyThread();

 

a.start();

b.start();

------------------------------------------------------------------------------------------------------------------

람다식

 

class MyThread implements Runnable(){

   public void run(){

      ~~~~~~~~

   }

}

 

MyThread t1=new MyThread();

(new Thread(t1)).start();

 

----------------------------------------------------------------------------------------------------------------------------------

함수형 인터페이스

 이제 이 함수형 인터페이스를 람다식 사용해서 구현해볼 것임 !

이제 반환값이 있는 함수형 인터페이스 

자바가 기본적으로 제공해주는 함수형 인터페이스

java.util.function (Java Platform SE 8 ) (oracle.com) 참고

 

IntFunction => int값을 매개변수로 전달받아 결과값을 다양한 자료형으로 반환하는 메소드

반환값을 제네릭으로 사용자가 맘대로 자료형 설정 가능 !

 

아하 메소드 이름을 알 필요가 없으니 람다식에 사용되는 함수형 인터페이스는 메소드가 무조건 하나구나

함수형 인터페이스도 그렇고 msa도 그렇고 하나 안에 다 정의하지 않고 하나의 기능 안에 하나만 오도록 분리시킴 

요즘 트렌드인가..?

 

또, 자바가 기본으로 제공해주는 함수형 인터페이스

Binary Operator

두 개의 매개변수를 전달받아 어떠한 처리를 하여 반환하는 메소드를 정의함

(단, 매개변수의 자료형과 반환값의 자료형은 일치해야 함!!!)

-----------------------------------------------------------------------------------------------------------------------------------

스트림

 

모던스크립트에서 map, filter함수가 있듯이 자바에도 스트림을 통한 map, filter함수가 있음

또한 람다식과 함께 사용 가능

 

map : 컬렉션의 데이터 수만큼 반복하여 어떠한 일을 수행하여 반환하도록 할 때 사용

컬렉션명.stream.map((하나씩꺼내올변수명)->{return 반환값;})

그럼 이건 컬렉션에 있는 데이터 수만큼 동작함!!!

또는 간단하다면 컬렉션명.stream.map(변수명->반환값)

이 때 반환값의 자료형은 stream이고 이것을 list로 받아 오기 위해서는

컬렉션명.stream.map(변수명->반환값).collect(Collectors.toList());

 

 

filter : 컬렉션이 데이터 수만큼 반복하여 조건을 만족하는 요소만 추출

컬렉션명.stream.filter(변수명->조건식)

 

sorted : 컬렉션의 요소 정렬

 

//여기까지는 매개변수가 하나씩 옴 !!!

//map이나 다른 것은 나만 가지고 연산을 하지만

//reduce는 나와 내 앞에 있는 원소와 무언가 연산을 해야할 때 씀 !

 

reduce : 컬렉션의 요소를 차례로 두 개씩 매개변수로 받아 연산결과를 반환함

연산결과는 다시 다음 요소의 첫 번째 매개변수로 들어감

 

이거 내가 맨날 헷갈려하는 상황 !!!!!!!!!!!!!

stream의 map 메소드는 매개변수 하나 받아서 반환하는 값의 개수는 원래 루프도는 list의 갯수 만큼 반환하고

stream의 filter 메소드는 매개변수 하나 받아서 반환하는 값의 개수는 모름 (필터링되어서 적어질 수도 똑같을 수도)

stream의 reduce 메소드는 매개변수 두 개 받아서 반환하는 값의 개수는 딱 하나! (최종연산 값)

 

에이젝스 파일 업로드

FormData 객체 만들어서 (여기서 제이쿼리 문법 안먹음 @!!)

그다음 에이젝스 통신 통해서 똑같이 하면 됨 !!!