Java 関数型プログラミングは、Java 8 番目 バージョン以降に登場します。関数型プログラミングは、問題解決へのアプローチに根本的な変化をもたらすことを意味します。関数型プログラミングでは、式 (関数の宣言)、関数を引数として渡す、関数をステートメントとして使用するプログラミングが可能です。
関数型プログラミングの種類
広告 このカテゴリーの人気コース プログラミング言語 - 専門分野 | 54 コース シリーズ | 4 つの模擬テスト無料ソフトウェア開発コースを始めましょう
Web 開発、プログラミング言語、ソフトウェア テスト、その他
関数型プログラミングの概念に入る前に、関数型プログラミングと構造化プログラミングの違いを見てみましょう。構造化プログラミングは論理構造またはプロセスに重点を置きますが、関数型プログラミングは主にデータに重点を置きます。構造化プログラミングはトップダウンのアプローチに従いますが、関数型プログラミングは下から上へのアプローチに従います。
関数型プログラミングはオブジェクトと呼ばれる小さな実行時エンティティに分割されますが、構造化プログラミングは小さなユニットまたは関数に分割されます。構造化プログラミングは安全性が低いですが、関数型プログラミングは安全性が高くなります。構造化プログラミングは複雑な問題を処理できませんが、関数型プログラミングはあらゆるレベルの複雑な問題を処理できます。
言及されている例を以下に示します:
構文:
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 } }
出力:
説明:
構文:
(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 }
コード:
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 } }
出力:
説明:
構文:
() -> { //code for implementation }
コード:
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 } }
出力:
説明:
構文:
Class-Name:: static method name
コード:
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 } }
出力:
Penjelasan:
Pengaturcaraan fungsional dicapai dengan strim, ungkapan lambda dan rujukan kaedah. Ia mengurangkan baris kod dan meningkatkan prestasi.
以上がJava での関数型プログラミングの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。