牛、豚、鶏、どれか一つ食べられなくなるとしたら?

ラムダ式について。

月の順番を英語名の文字の少ない順番に並び替えるプログラムです。

これをラムダ式を用いて書き換える場合どうなりますか?
また、コレクションの表示にforEachメソッドを使用、Comparableインタフェースを実装せずにしたいです。



import java.util.ArrayList;
import java.util.Collections;

class Month implements Comparable<Month>{
int num;
String name;

Month(int n, String nm){
num = n;
name = nm;
}

public int compareTo(Month m){
return this.name.length() - m.name.length();
}
}


public class MonthSort{
public static void main(String[] args){
ArrayList<Month> monthList = new ArrayList<Month>();
String [] mname ={"January", "February", "March", "April", "May", "June",
"July", "August", "September", "October", "November", "December"};

int i=1;
for(String str: mname){
monthList.add(new Month(i++, str));
}

Collections.sort(monthList);

for(Month m: monthList){
System.out.println(m.num+"月"+"(英語:"+m.name+")" );
}
}
}





よろしくお願いします。

A 回答 (1件)

Java7の環境しかなく実働確認ができないけど。



下記のWebページを参考にしました。
https://www.sejuku.net/blog/14155
https://qiita.com/frost_star/items/06526b7cde823 …
https://qiita.com/tag1216/items/50ecf6a7bc10218e …
3コ目のリンクから、今は下記のようにした方がいいのかなという気がします。
(大差はないけど可読性は良いように思います。)

Collections.sort(monthList, comparing(x -> x.name.length()));
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!