OCJP GOLDの学習をしております。
以下のコードで「Comparator.comparing」となっている理由が知りたいです。
ラムダ式に直すと、
Set<employee> set = new TreeSet<>((e1,e2) -> e1.getId() - e2.getId());
となり、引数が2つなので、「Coparatorインタフェースのcompareメソッド」を使用すると考えました。
上記の通り、引数が2つなので、comparingメソッドは使えないと考えておりますが、なぜcomparingメソッドが使われているのでしょうか。
compare:https://docs.oracle.com/javase/jp/8/docs/api/java/util/Comparator.html#compare-T-T-
Java
1import java.util.Comparator; 2import java.util.Set; 3import java.util.TreeSet; 4 5public class Main { 6 7 public static void main(String[] args) { 8 // TODO 自動生成されたメソッド・スタブ 9 Set<Employee> set = new TreeSet<>(Comparator.comparing(Employee::getId)); 10 set.add(new Employee(3,"John")); 11 set.add(new Employee(1,"Bill")); 12 set.add(new Employee(2,"Eric")); 13 System.out.println(set); 14 } 15 16}
Java
1public class Employee { 2 3 private int id; 4 private String name; 5 6 public Employee(int id, String name) { 7 this.id = id; 8 this.name = name; 9 } 10 11 public int getId() { 12 return id; 13 } 14 15 @Override 16 public String toString() { 17 return id + "=" + name; 18 } 19} 20
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/15 11:39