2020년 9월 18일 금요일

(자바/JAVA/자바동영상/자바교육/자바강의/자바강좌/JAVA교육)JAVA8 forEach, 람다식, 함수형인터페이스

 (자바/JAVA/자바동영상/자바교육/자바강의/자바강좌/JAVA교육)JAVA8 forEach, 람다식, 함수형인터페이스 


https://youtu.be/7TZYJHHXifQ



(자바동영상/자바교육/자바강의/자바강좌)JAVA8 forEach, 람다식, 함수형인터페이스 


자바8

@FunctionalInterface

public interface Consumer<T> {

void accept(T t)

}


void forEach(Consumer<T> action) 


empNames.forEach( (s) -> System.out.println(s) );


자바7 개선된 for문

for (String s : empNames) { 

 System.out.println(s));

   }



자바8 이전까지 Collection등을 순회할 때 Iterator(반복자)를 얻어 순회했지만 자바8 이후부터는  forEach로 가능하다.

forEach로 비즈니스 로직을 분리하여 재사용가능


      String[] myArr = {"오라클","자바"};

    

     List<String> list = (List)Arrays.asList(myArr);

     list.forEach(s -> System.out.println(s));  list.forEach(System.out::println);


[결과]

오라클

자바

------

오라클

자바




[예제]

package javatest;


import java.util.Arrays;

import java.util.Iterator;

import java.util.List;

import java.util.function.Consumer;


//Consumer implementation that can be reused

class OjcConsumer implements Consumer<String> {

public void accept(String s) {

System.out.println("Consumer impl :: " + s);

}

}


public class ForTest {

public static void main(String[] args) {

String[] myArr = {"오라클자바", "커뮤니티"};

List<String> myList = (List)Arrays.asList(myArr);


// 반복자를 얻어 Collection을 순회

Iterator<String> iter = myList.iterator();

while (iter.hasNext()) {

System.out.println("Iterator String  :: " + iter.next());

}


// 이번에는 forEach문을 이용하자. 

// Consumer는 자바에서 제공하는 추상메소드가 하나 있는 함수형 인터페이스이다.

// 파라미터를 받아서 void형 accept 메소드 구현

myList.forEach(new Consumer<String>() {

public void accept(String s) {

System.out.println("forEach s :: " + s);

}

});


// Consumer 인터페이스를 구현한 클래스를 new후 forEach에 사용

myList.forEach(new OjcConsumer());


// 이번에는 람다식으로...

// 메서드를 람다식으로 표현하면 메서드의 이름과 반환값이 없어지므로

// 람다식을 '익명 함수(anonymous function)'라고 한다.

// forEach안에는 Consumer 인터페이스 타입이 들어와야 하는데

// accept 추상메소드 하나만 있으므로 람다식으로 구현한 아래 괄호안의 메소드는

// accept 추상메소드의 구현체인 익명함수인것이다.

myList.forEach(s -> System.out.println("람다식 :: " + s));


//이번에는 더블콜론 연산자로... 이름만으로 특정메소드 호출

        //타겟 레퍼런스는 :: 앞에 놓고 메소드명은 :: 뒤에 놓습니다.

System.out.println("----- 더블콜론 연산자 ------");

myList.forEach(System.out::println);

}

}



Iterator String  :: 오라클자바

Iterator String  :: 커뮤니티

forEach s :: 오라클자바

forEach s :: 커뮤니티

Consumer impl :: 오라클자바

Consumer impl :: 커뮤니티

람다식 :: 오라클자바

람다식 :: 커뮤니티

----- 더블콜론 연산자 ------

오라클자바

커뮤니티


 #자바forEach, #자바for, #자바람다식, #함수형인터페이스, #자바, #JAVA, #자바변수, #클래스변수, #인스턴스변수, #자바동영상, #자바동영상강의, #자바강의, #자바강좌, #JAVA, #JAVA동영상, #JAVA강의, #JAVA강좌, #자바교육, #JAVA교육, #자바소스  

댓글 없음:

댓글 쓰기

(C#교육동영상)C# ADO.NET 실습 ODP.NET/ODAC 설치 오라클 함수 호출 실습, C#학원, WPF학원, 닷넷학원, 자바학원

  (C#교육동영상)C# ADO.NET 실습  ODP.NET/ODAC 설치  오라클 함수 호출 실습, C#학원, WPF학원, 닷넷학원, 자바학원 https://www.youtube.com/watch?v=qIPU85yAlzc&list=PLxU-i...