今年より新入社員としてJavaの勉強をしているものです。
匿名クラス・ラムダ式の学習を進めていくうえでどうしてもわからない(腑に落ちない)箇所があるため質問することにいたしました。
java
1package sort ; 2 3public class Member implements Comparable<Member>{ 4 private int id; 5 private String name; 6 7 public Member(int id, String name) { 8 this.id = id; 9 this.name = name; 10 } 11 12 public int getId() { 13 return id; 14 } 15 16 public String getName() { 17 return name; 18 } 19 20 public void setId(int id) { 21 this.id = id; 22 } 23 24 public void setName(String name) { 25 this.name = name; 26 } 27 @Override 28 public int compareTo(Member m) { 29 return Integer.compare(id, m.id); 30 } 31 @Override 32 public int hashCode() { 33 final int prime = 31; 34 int result = 1; 35 result = prime * result + id; 36 return result; 37 } 38 39 @Override 40 public boolean equals(Object obj) { 41 if(this == obj) 42 return true; 43 if(obj == null) 44 return false; 45 if(getClass() != obj.getClass()) 46 return false; 47 Member other = (Member) obj; 48 if(id != other.id) 49 return false; 50 return true; 51 } 52 @Override 53 public String toString() { 54 return "Member [id=" + id + ", name=" + name + "]"; 55 } 56 57} 58
java
1package sample; 2import java.util.*; 3public class SortExample { 4 public static void main(String[] args) { 5 6 List<Member> list = Arrays.asList( new Member(115, "たなか"), 7 new Member(120, "きむら"), 8 new Member(108, "さとう"), 9 new Member(105, "やました"), 10 new Member(112, "すずき") ); 11 list.sort(new Comparator<Member>() { 12 public int compare(Member 『o1』, Member 『o2』) { 13 String s1 = o1.getName(), s2=o2.getName(); 14 return s1.compareTo(s2); 15 } 16 }); 17 18 for(Member m : list) { 19 System.out.println(m); 20 } 21 } 22} 23
上記コードの中で『』に囲まれている箇所、compareメソッドの内のMember o1,o2についてです。
これらの引数には具体的にどういった値が入ってくるのかがいまいち理解できません。
今までの勉強の中では
Member o1 = new Member(001, "OOO");
Member o2 = new Member(002, "XXX");
といったように具体出来な値が定義されていおり、
その中のo1.getNumber(),o2.getNumber()の値を比較し、0or1を返しバブルソートして、
実際にソートを実行していると解釈していますが、
今回のこのコードに関してはo1,o2に具体出来な値が入ってきていないにも関わらず、ソートできてしますのが非常に謎です。
また、ラムダ式も同じく
結局『』のo1,o2とはいったい何者なのか?
これが分からないと処理がわかなくて非常に困っています。
java
1package sample; 2 3import java.util.Arrays; 4import java.util.List; 5 6 7public class SortExample { 8 public static void main(String[] args) { 9 List<Member> list = Arrays.asList( new Member(115, "たなか"), 10 new Member(120, "きむら"), 11 new Member(108, "さとう"), 12 new Member(105, "やました"), 13 new Member(112, "すずき") ); 14 15 list.sort((o1, o2)->o1.getName().compareTo(o2.getName())); 16 17 for(Member m : list) { 18 System.out.println(m); 19 } 20 } 21} 22
長文となってしまいましたが、
どなたかご教授いただけると幸いです。
よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。