J a v a 8

k o w a z a

@maaya8585  石田真彩

@maaya8585

Java女子部運営 副部長

  • Java見てる歴7年

  • Java書いてる歴2年

  • 休日フラガール

  • ディズニー好き

Java8の新機能は

これで

勉強しよう!

http://amzn.to/1H1EHXT

String#join

【いままで書いてた感じ】

public static void main(String args[]) {
        List<String> favoriteThings = new ArrayList<>();
        favoriteThings.add("Java");
        favoriteThings.add("フラ");
        favoriteThings.add("ディズニー");

        StringBuilder sentence = new StringBuilder();
        sentence.append("まーやの好きなものは");

        for(int i = 0; i < favoriteThings.size(); i++) {
            sentence.append(favoriteThings.get(i));

            if (i != favoriteThings.size() -1) {
                sentence.append("と");
            }
        }
        System.out.println(sentence);
}

String#join

【こんな風にかける】

public static void main(String args[]) {
        List<String> favoriteThings = new ArrayList<>();
        favoriteThings.add("Java");
        favoriteThings.add("フラ");
        favoriteThings.add("ディズニー");

        String sentence = "まーやの好きなものは" 
            + String.join("と", favoriteThings);
        System.out.println(sentence);
}
  • 行数が減る!

  • for文もif文もいらない!

  • appendもいらない!

Map#getOrDefault

いままで書いてた感じ

public static void main(String args[]) {
        Map<String,String> islandColors = new HashMap<>();
        islandColors.put("Oahu", "黄色");
        islandColors.put("Hawaii", "赤");
        islandColors.put("Kauai", "紫");

        //Mapに登録されていない値を探す
        if(!islandColors.containsKey("日本")) {
            System.out.println("未登録");
        }
}

Map#getOrDefault

【こんな風にかける】

public static void main(String args[]) {
        Map<String,String> islandColors = new HashMap<>();
        islandColors.put("Oahu", "黄色");
        islandColors.put("Hawaii", "赤");
        islandColors.put("Kauai", "紫");

        //存在しない場合の返却値を設定できる
        System.out.println(islandColors.getOrDefault("日本","未登録"));

        //存在する場合は登録されている値が返却される
        System.out.println(islandColors.getOrDefault("Oahu","未登録"));
}
  • 行数が減る!

  • if文もいらない!

未登録
黄色

Map#replace 1

【いままで書いてた感じ】

public static void main(String args[]) {
        Map<String,Integer> waitingTime = new HashMap<>();
        waitingTime.put("カリブの海賊",5);
        waitingTime.put("スターツアーズ",30);
        waitingTime.put("スペースマウンテン",60);

        waitingTime.put("カリブの海賊", 20);
        System.out.println(waitingTime.get("カリブの海賊"));
}
waitingTime.replace("カリブの海賊", 10);
System.out.println(waitingTime.get("カリブの海賊"));

【こんな風に書ける】

Map#replace 1

public static void main(String args[]) {
        Map<String,Integer> waitingTime = new HashMap<>();
        waitingTime.put("カリブの海賊",5);
        waitingTime.put("スターツアーズ",30);
        waitingTime.put("スペースマウンテン",60);

        //存在するキーの置換
        System.out.println(waitingTime.replace("カリブの海賊", 20));
        //存在しないキーの置換
        System.out.println(waitingTime.replace("空飛ぶダンボ", 45));
}
20
null

置換後の値が返却される

置換できなかった場合はnull

Map#replace 2

public static void main(String args[]) {
        Map<String, String> status = new HashMap<>();
        status.put("ミッキー", "元気");
        status.put("ミニー", "病気");
        status.put("ドナルド", "元気");

        //ミニーの病気を治療する
        if(status.get("ミニー").equals("病気")){
            status.put("ミニー", "治療中");
            System.out.println(status.get("ミニー"));
        }
}

【いままで書いてた感じ】

【こんな風に書ける】

status.replace("ミニー", "病気", "治療中");
System.out.println(status.get("ミニー"));

戻り値はboolean  ->

Map#replace まとめ

「追加(put)」なのか

「置換(replace)」なのか

を明記することができる

 

 

後から読む人に優しいソース

Collection#removeif

public static void main(String args[]) {
        List<String> language = new ArrayList<>();
        language.add("Java");
        language.add("Python");
        language.add("Ruby");

        List<String> result = new ArrayList<>();
        for(String lang: language){
            if(!lang.contains("y")){
                result.add(lang);
            }
        }

        System.out.println(result);
}

【いままで書いてた感じ】

<- 判定からの

詰め替え

Collection#removeif

public static void main(String args[]) {
        List<String> language = new ArrayList<>();
        language.add("Java");
        language.add("Python");
        language.add("Ruby");

        language.removeIf(str -> str.contains("y"));
        System.out.println(language);
}

【こんな風に書ける】

  • for文がいらない!

  • Listの詰め替えがいらない!

m a t o m e

  • if文やfor文に頼らなくてもよくなる機能が増えました。

 

  • ラムダ式やStreamAPIと組み合わせるともっとすっきりしたソースになるよ!

 

  • 他にもいろいろ機能追加があるので、調べてみてね!

F i n.

@maaya8585

20151114_javajo_java8

By maaya ishida

20151114_javajo_java8

  • 1,643