SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

HRzine Day(エイチアールジン・デイ)は、人が活き会社が成長する人事のWebマガジン「HRzine」が主催するイベントです。毎回、人事の重要課題を1つテーマに設定し、識者やエキスパードが持つ知見・経験を、参加者のみなさんと共有しています。

直近開催のイベントはこちら!

HRzine×SmartHR 人材・組織活性化フォーラム

2024年12月6日(金)13:00~15:30

主要製品スペック一覧

人事業務の効率・確度・精度を高めるために欠かせないHRテクノロジー。その主な製品の機能を分野ごとに比較できる資料群です。製品検討の参考資料としてご活用ください。

eラーニング・LMS<br>主要製品スペック一覧 2024

eラーニング・LMS
主要製品スペック一覧 2024

その他のスペック一覧

人事労務管理システム<br>主要製品スペック一覧 2023

人事労務管理システム
主要製品スペック一覧 2023

タレントマネジメントシステム<br>主要製品スペック一覧 2023

タレントマネジメントシステム
主要製品スペック一覧 2023

みちこ先生のオラクル認定Javaプログラマ Silver SE 7/8 合格コース | 特別授業

【認定Java Silver】ここが変わった! OCJP Silver SE 8要点解説[後編] ~ 新出題ラムダ式


  • Facebook
  • X
  • Pocket
  • note
  • hatena

本記事の目次 )

模擬問題に挑戦!

では、今回解説したことの理解度を確認するため、3問の模擬問題に挑戦してみましょう。

問題1

以下コードの実行結果が[RED, BLUE, GREEN]と出力されるには、[①]に挿入するコードとして正しい解答はどれですか?

■Sample7.java
import java.util.*;

public class Sample7 {
  public static void main(String[] args) {
    List<String> color = Arrays.asList("red", "blue", "green");
    [   ①   ]
    System.out.println(color);
  }
}
  • A. for(String s : color) { color = s.toUpperCase(); }
  • B. color.replaceAll((String s) -> {return s.toUpperCase();});
  • C. color.replaceAll(s -> toUpperCase());
  • D. for(int i = 0 ; i < color.size(); i++) { color[i].toUpperCase(); }

選択肢A、Dはともにコンパイルエラーです。選択肢Cは(s -> toUpperCase())(s -> s.toUpperCase())となっていればコンパイル、実行ともに成功し、実行結果は[RED, BLUE, GREEN]となります。

〔正解:B

問題2

以下のコードを、コンパイル、実行した場合、正しい解答はどれですか?

■Sample8.java
import java.util.*;

public class Sample8 {
  public static void main(String[] args) {
    String[] ary = {"tokyo", "nagasaki", "mie", "nara"};
    List<String> city = Arrays.asList(ary);
    if(city.removeIf(str -> str.length() <=3)) {
      System.out.println(city);
    }
  }
}
  • A. 「[tokyo, nagasaki, nara]」が出力される
  • B. 「[tokyo, nagasaki]」が出力される
  • C. コンパイルエラーとなる
  • D. 実行時エラーとなる

6行目では、5行目で作成した配列をもとにリストを作成していますが、これは固定リストです。したがって、7行目で固定リストに対し削除を試みるため、実行時にUnsupportedOperationException例外が発生します。6行目を次のように変更すると可変リストとして扱われ、7行目で各要素内にある文字列の文字数が3以下の要素のみ削除します。したがって、実行結果は[tokyo, nagasaki, nara]となります。

Sample8の6行目を変更した場合
(現行)
6.  List<String> city = Arrays.asList(ary);

(変更後)
6.  List<String> city = new ArrayList<>(Arrays.asList(ary));

〔正解:D

問題3

以下コードでは、12行目のmethod()メソッドが実行されたら、「30」と出力したいと考えています。[ ① ]に挿入するコードとして正しい解答はどれですか?

■Sample9.java
import java.util.*;
import java.util.function.*;

public class Sample9 {
  public static void main(String[] args) {
    List<Integer> list = new ArrayList<>();
    list.add(new Integer(10));
    list.add(new Integer(20));
    list.add(new Integer(30));
    method(list, [  ①  ]);
  }
  static void method(List<Integer> list, Predicate<Integer> op) {
    for(Integer val : list) {
      if(op.test(val)) {
        System.out.println(val);
      }
    }
  }
}
  • A. list.get(i) > 20
  • B. (int val) -> {return val > 20;}
  • C. val -> val > 20
  • D. val > 20

問題文、選択肢から、リストの要素が20を超えるものを出力する必要があります。

12行目のmethod()メソッドの第2引数は、関数型インタフェースPredicateのラムダ式を受け取ります。Predicateインタフェースは抽象メソッドboolean test(T t)を持つので、[ ① ]には、その実装を指定する必要があります。

正解は選択肢Cです。それ以外はすべてコンパイルエラーになりますが、選択肢Bは確認しておきましょう。

選択肢Bでは、->の左辺が(int val)となっていますが、Predicateインタフェースのtest()メソッドの引数がとるのは参照型です。12行目のmethod()メソッドの第2引数もPredicate<Integer>型で宣言されているため、プリミティブ型である(int val)ではコンパイルエラーとなります。もし(int val)(Integer val)としていれば、選択肢Cと同様の結果を得ることができます。

〔正解:C

本記事では2回にわたって、Silver SE 8試験での変更点を解説しました。Java SE 8の新機能であり、Silver SE 8試験の新トピックとなったDate and Time APIとラムダ式を解説しましたが、本記事で取り上げたのは仕様のごく一部です。ぜひ、この機会に仕様書をひととおりチェックしていただければと思います。特にラムダ式は、今後のJavaアプリケーション開発で多用されるでしょうから、まさに今! 習得しましょう。

この記事は参考になりましたか?

  • Facebook
  • X
  • Pocket
  • note
  • hatena
みちこ先生のオラクル認定Javaプログラマ Silver SE 7/8 合格コース連載記事一覧

もっと読む

この記事の著者

山本道子(ヤマモト ミチコ)

2004年Sun Microsystems社を退職後、有限会社Rayを設立し、システム開発、インストラクタ、執筆業などを手がける。著書に『オラクル認定資格教科書 Javaプログラマ Bronze SE 7/8』『同Silver SE 8』『同Gold SE 8』のほか、『SUN教科書 Webコンポーネントディベロッパ(SJC-WC)』、『携帯OS教科書 Androidアプリケーション技術者ベーシック』、『Linux教科書 LPICレベル1 スピードマスター問題集』(共著)、監訳書に『SUN教科書 Javaプログラマ(SJC-P)5.0・6.0 両対応』(いずれも翔泳社刊)などがある。月刊誌『日経Linux』(日経BP社刊)でLPIC対策記事を連載。日々の楽しみは晩酌、好きな言葉は表面張力。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事をシェア

  • Facebook
  • X
  • Pocket
  • note
  • hatena
HRzine
https://hrzine.jp/article/detail/39 2016/02/23 19:03

Special Contents

AD

Job Board

AD

おすすめ

アクセスランキング

アクセスランキング

イベント

HRzine Day(エイチアールジン・デイ)は、人が活き会社が成長する人事のWebマガジン「HRzine」が主催するイベントです。毎回、人事の重要課題を1つテーマに設定し、識者やエキスパードが持つ知見・経験を、参加者のみなさんと共有しています。

2024年12月6日(金)13:00~15:30

イベントカレンダーを見る

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング