HOWTO · Java
Java の Lambda コンパレータ
Java の Lambda コンパレータを理解する。
このガイドでは、Java プログラミング言語のラムダコンパレータに取り組みます。
コンパレータ関数を理解するには、ラムダの基本的な理解を理解する必要があります。このガイドを詳しく見ていきましょう。
Java の Lambda コンパレータ
ラムダ式は、パラメーターを受け入れるコードブロックであり、値を返します。
ラムダ式はメソッドに似ています。ただし、メソッドのような名前は必要なく、メソッドの本体に直接実装できます。
ラムダ式は関数型プログラミングへの第一歩です。ラムダ式は、JavaScript の矢印関数にほぼ似ています。ラムダ関数の構文は次のとおりです。
(parameter) -> { /*statements Here*/
}
// Lambda Expressions With Single Parameter......
(parameter1, parameter2) -> { /*statements Here*/
}
// Lambda Expressions With two Parameter......
ラムダの最初の例を見てみましょう。
List<Integer> numbers = new ArrayList<Integer>(); // Example Array list
numbers.add(5);
numbers.add(9);
numbers.add(8);
numbers.add(1);
// e.g Lambda Expressions With No Parameter......
Consumer<Integer> cons = (index) -> {
System.out.println(index);
};
numbers.forEach(cons);
// Lambda Expression End Here............
上記のコードは配列リストを表示します。ラムダ構文を確認したので、ラムダコンパレータを見てみましょう。
インターフェイス Comparator<T> は機能(ラムダ式)インターフェイスであり、ラムダ式またはメソッド参照の割り当てターゲットとして使用できます。比較関数は、オブジェクトの collections(arraylist) を並べ替えるために使用されます。
コンパレータは、ソートメソッド(Collections.sort または Arrays.sort)に渡すことができます。これらのメソッドを使用して、定義されたデータセット全体を並べ替えます。
次のコードを見てください。
List<Employee> totalEmployees = new ArrayList<Employee>();
totalEmployees.add(new Employee(24, "RavigHambole", 5000));
totalEmployees.add(new Employee(26, "Bill Gates", 400));
totalEmployees.add(new Employee(34, "Mark Zukerberg", 40000));
totalEmployees.add(new Employee(56, "Sundar Picahi", 300));
totalEmployees.add(new Employee(34, "Potus", 1220));
totalEmployees.add(new Employee(23, "Obama", 5032));
totalEmployees.add(new Employee(15, "Halary Clinton", 5030));
totalEmployees.add(new Employee(23, "David", 500320));
// Now Compartor Method To Sort According to Age......
System.out.println("Before Sort");
for (Employee temp : totalEmployees) {
System.out.println("Name :" + temp.Name);
System.out.println("Age :" + temp.age);
System.out.println("Salary :" + temp.Salary);
}
// simply defined and displayed the array list
コード例では、名前、年齢、給与を特徴とするデータセットを定義しました。このデータは、年齢または給与で並べ替えることができます。
ラムダ式がこの点でどのように役立つかを見てみましょう。
Comparator<Employee> ee = new Comparator<Employee>() {
// Overriding Comparator method to sort according to age
@Override
public int compare(Employee o1, Employee o2) {
return o2.age - o1.age;
}
};
// Now Sorting the Method.... According to age
totalEmployees.sort((Employee o1, Employee o2) -> o1.age - o2.age);
System.out.println("After Sort by age..........");
for (Employee temp : totalEmployees) {
System.out.println("Name :" + temp.Name);
System.out.println("Age :" + temp.age);
System.out.println("Salary" + temp.Salary);
}
コンパレータ用に定義された組み込み機能があります。年齢を比較し、データセットを年齢で並べ替えるロジックを展開することで、これをオーバーライドします。
後で、ラムダのパラメーターとして従業員を渡すだけです。両方のパラメーター(従業員)の年齢を比較することにより、機能を定義しました。
上記のコードはすべて、以下の完全なコードの一部です。それらを実行するには、ライブラリとすべてのクラスを追加する必要があります。
したがって、次のコードを実行します。
完全なコード
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.function.Consumer;
public class Main {
public static void main(String[] args) {
List<Integer> numbers = new ArrayList<Integer>();
numbers.add(5);
numbers.add(9);
numbers.add(8);
numbers.add(1);
Consumer<Integer> cons = (index) -> {
System.out.println(index);
};
numbers.forEach(cons);
List<Employee> totalEmployees = new ArrayList<Employee>();
totalEmployees.add(new Employee(24, "RavigHambole", 5000));
totalEmployees.add(new Employee(26, "Bill Gates", 400));
totalEmployees.add(new Employee(34, "Mark Zukerberg", 40000));
totalEmployees.add(new Employee(56, "Sundar Picahi", 300));
totalEmployees.add(new Employee(34, "Potus", 1220));
totalEmployees.add(new Employee(23, "Obama", 5032));
totalEmployees.add(new Employee(15, "Halary Clinton", 5030));
totalEmployees.add(new Employee(23, "David", 500320));
// Now Compartor Method To Sort According to Age......
System.out.println("Before Sort");
for (Employee temp : totalEmployees) {
System.out.println("Name :" + temp.Name);
System.out.println("Age :" + temp.age);
System.out.println("Salary :" + temp.Salary);
}
Comparator<Employee> ee = new Comparator<Employee>() {
// Overirding Compartor method to sort according to
// age
@Override
public int compare(Employee o1, Employee o2) {
return o2.age - o1.age;
}
};
totalEmployees.sort(ee);
// Now Sorting the Method.... According to age
totalEmployees.sort((Employee o1, Employee o2) -> o1.age - o2.age);
System.out.println("After Sort by age..........");
for (Employee temp : totalEmployees) {
System.out.println("Name :" + temp.Name);
System.out.println("Age :" + temp.age);
System.out.println("Salary" + temp.Salary);
}
}
}
class Employee { // Employee Class..
public int age;
public String Name;
public int Salary;
Employee(int a, String Na, int Sa) {
this.age = a;
this.Name = Na;
this.Salary = Sa;
}
}