> Java > java지도 시간 > Java의 함수형 프로그래밍

Java의 함수형 프로그래밍

WBOY
풀어 주다: 2024-08-30 16:03:56
원래의
503명이 탐색했습니다.

Java 함수형 프로그래밍은 Java 8번째 버전 이후에 등장합니다. 함수형 프로그래밍은 문제 해결에 대한 접근 방식의 근본적인 변화를 의미합니다. 함수형 프로그래밍을 사용하면 표현식(함수 선언)을 사용하여 프로그래밍하고, 함수를 인수로 전달하고, 함수를 명령문으로 사용할 수 있습니다.

함수형 프로그래밍의 종류

광고 이 카테고리에서 인기 있는 강좌 프로그래밍 언어 - 전문 분야 | 54 코스 시리즈 | 4가지 모의고사

무료 소프트웨어 개발 과정 시작

웹 개발, 프로그래밍 언어, 소프트웨어 테스팅 등

  • 함수형 프로그래밍 스트리밍
  • 람다 표현식 함수형 프로그래밍
  • 메소드 참조 함수형 프로그래밍

Java에서 함수형 프로그래밍은 어떻게 작동하나요?

함수형 프로그래밍 개념에 들어가기 전에 함수형 프로그래밍과 구조적 프로그래밍의 차이점을 살펴보겠습니다. 구조적 프로그래밍은 논리적 구조나 프로세스를 강조하는 반면, 함수형 프로그래밍은 주로 데이터에 중점을 둡니다. 구조적 프로그래밍은 하향식 접근 방식을 따르는 반면, 함수형 프로그래밍은 아래에서 위쪽으로 따릅니다.

함수형 프로그래밍은 객체라고 하는 작은 런타임 개체로 분리되는 반면, 구조적 프로그래밍은 작은 단위나 함수로 분리됩니다. 구조적 프로그래밍은 덜 안전하지만, 함수형 프로그래밍은 매우 안전합니다. 구조적 프로그래밍은 복잡한 문제를 처리할 수 없는 반면, 함수형 프로그래밍은 모든 수준의 복잡한 문제를 처리합니다.

Java의 함수형 프로그래밍 예

다음은 언급된 예입니다.

예 #1: 함수형 프로그래밍 스트리밍

구문:

objectName.stream();
로그인 후 복사

코드:

Animal.java

package com.streams;
public class Animal {
String name;
String color;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public Animal(String name, String color) {
super();
this.name = name;
this.color = color;
}
}
로그인 후 복사

AnimalNames.java

package com.streams;//creating package
//importing required packages to the code
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class AnimalNames {
public static void main(String[] args) {
getMyDogNames();//calling the method
}
private static void getMyDogNames() {
Animal a1=new Animal("Puppy","black"); //creating a object for animal class
Animal a2=new Animal("Tommy","brown");//creating a object for animal class
Animal a3=new Animal("Zimmy","white");//creating a object for animal class
List<Animal> persons = Arrays.asList(a1,a2,a3); //passing object references to list
String dogName = persons.stream() //covert all elements into stream
.filter(name -> "Puppy".equals(name.getName()))//filtering given elements from persons class
.map(Animal::getName)     //persons elements iterate over map
.findAny()//find out the given element passed from filter
.orElse("");//
System.out.println("Dog Name :" + dogName); //print the dog name
List<String> collect = persons.stream()
.map(Animal::getName)
.collect(Collectors.toList());//collecting all names from list
System.out.println("All Dog names");
collect.forEach(System.out::println);//iterating collection with for each loop
}
}
로그인 후 복사

출력:

Java의 함수형 프로그래밍

설명:

  • Java 클래스에서는 setter와 getter를 생성하고 있습니다.
  • Java 클래스에서 개 이름을 출력하기 위한 메인 코드를 작성합니다.
  • 코드 자체의 주석에 각 줄의 목적을 언급하세요.
  • 구조적 프로그래밍에서 동일한 코드를 작성하면 filter(), Collector(), findAny(), map() 등과 같은 각 메서드에 대해 더 많은 줄을 작성해야 합니다. 따라서 대부분의 함수형 프로그래밍 개발이 선호됩니다. 구조화된 프로그래밍.

예 #2: 람다 표현식

  • 람다 표현식은 표현식으로 메소드 인터페이스를 나타내는 데 사용됩니다.
  • 컬렉션에서 데이터를 반복, 필터링 및 추출하는 데 도움이 됩니다.
  • 람다 표현식 인터페이스 구현은 기능적 인터페이스입니다.
  • 코드가 많이 줄어듭니다.
  • 람다 표현식은 함수로 처리되므로 Java 컴파일러는 .class를 생성할 수 없습니다

구문:

(arguments) ->
{
//code for implementation
}
Arguments:  argument-list can be have values or no values
Example: arguments1, arguments2, arguments3,……
->: Joins code implementation and arguments.
로그인 후 복사
아. 단일 인수가 있는 람다 표현식

구문:

(argument1) ->
{
//code for implementation
}
로그인 후 복사
예 – AreaOfSquare.java

코드:

package com.lambda;//creating a package
interface Square{  //creating interface for quare
public int getArea(int side);  //create a method for get area
}
public class AreaOfSquare{  //As we are working with Lambda expression so no need to implement interface of square
public static void main(String[] args) {
Square area=(side)->{  // Lambda expression with only one argument.
Return side*side;  //returning area
};
System.out.println(“Area of Square=>”+area.getArea(10));   //printing area by calling interface getArea method
}
}
로그인 후 복사

출력:

Java의 함수형 프로그래밍

설명:

  • 위에서는 Square 인터페이스를 생성하고 AreaOfSquare 클래스 내부에 람다 표현식을 작성했습니다.
  • 람다 표현식 내에서 정사각형 면적에 대한 논리를 작성했습니다.
  • 인쇄된 마지막 줄에는 인터페이스 메소드 getArea()를 호출하여 100의 제곱의 면적이 표시됩니다.
ㄴ.  인수가 없는 람다 식

구문:

() ->
{
//code for implementation
}
로그인 후 복사
예 – MyNameString.java

코드:

package com.lambda;//creating a package
interface Name{  //creating interface for Name
public String getMyName();  //create a method for get name
}
public class MyNameString{  //As we are working with Lambda expression so no need to implement interface of Name
public static void main(String[] args) {
Name name=()->{  // Lambda expression with out argument.
return "Hi, Amardeep!"; //returning name
};
System.out.println(name.getMyName());   //printing name by calling interface getMyName method
}
}
로그인 후 복사

출력:

Java의 함수형 프로그래밍

설명:

  • 위에서는 Name 인터페이스를 생성하고 MyNameString 클래스 내부에 인수 없이 람다 표현식을 작성했습니다.
  • 람다 표현식 내에서 반환 문자열에 대한 논리가 작성되었습니다.
  • 인쇄된 마지막 줄의 문자열은 Hi, Amardeep!입니다. 인터페이스 메소드 getMyName()을 호출하여.

예시 #3: 방법 참조

  • 메소드 참조는 기능적 인터페이스의 메소드를 지칭하는 데 사용됩니다.
  • 람다 표현식의 또 다른 쉬운 형태입니다.
  • 메서드를 지정하기 위해 매번 람다 식을 사용하는 경우 메서드 참조 대신 메서드 참조를 사용할 수 있습니다.

구문:

Class-Name:: static method name
로그인 후 복사
예 – StaticMethodReference.java

코드:

package method.reference;//creating package
interface RectangleArea{  //creating RectangleArea interface
public int getArea(int l,int b);  //creating method getArea in interface
}
public class StaticMethodReference {  //creating a classs
public static int showRectangleArea(int length, int breadth){  //creating method for getting rectangle area
return length*breadth;
}
public static void main(String[] args) {
// Referring static method
RectangleArea area = StaticMethodReference::showRectangleArea;  //calling class name with method name
// Calling interface method
int outArea=area.getArea(10,20);
System.out.println("Area of rectangle :"+outArea);//printing area
}
}
로그인 후 복사

출력:

Java의 함수형 프로그래밍

설명:

  • 위에서는 Rectangle 인터페이스를 생성하고 StaticMethodReference 클래스 내부에 정적 메서드 참조 코드를 작성했습니다.
  • showRectangleArea() 메서드 내에서 직사각형 영역에 대한 논리가 작성되었습니다.
  • 다음 줄에서는 RectangleArea 인터페이스 참조에 대한 정적 메서드 참조를 전달했습니다.
  • 다음으로 getArea(10,20) 메소드를 호출하여 직사각형 영역을 선 인쇄합니다.
  • 출력은 200입니다.

결론

함수형 프로그래밍은 스트림, 람다 표현식, 메서드 참조를 통해 이루어집니다. 코드 줄을 줄이고 성능을 향상시킵니다.

위 내용은 Java의 함수형 프로그래밍의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿