Java インターフェース 〜Listの使い方、ワンポイントレッスン的な〜

イントロダクション

Javaの場合、インターフェースはよく使うもので「List」と「Map」があります。

<List>

<Map>

Listインターフェース

インターフェースは実体を持たないクラスです。。。と記載しても意味がわからないと思います。コードで語りましょう。

public static void main(String[] args) {
  /* 配列(String[]型)のリストList<E>の
   * Eはエレメント(要素)で実際はなんでも良い
   */
  List<String> list1 = new ArrayList<String>();
  // 要素を順番に登録するLinkさせてリストを作ります。
  List<String> list2 = new LinkedList<String>();
}

正直、LinkedListをうまく説明できていないと思います。現状ではとりあえず『「ArrayList」と違うんだな!』と理解していただければ。。。

ArrayListLinkedListを比較してみましたが、結果は変わりませんでした。


テスト実行したソースはGitにアップしました。

早い話

インターフェース(List)を実装しているクラスは全く関係のないクラスだったとしてもListとして使用できるということです。
※実際には、オーバーライドしなくてはいけないメソッドがあるので、処理内容が限定されます。

処理スピードが違うという噂を聞きましたが、この違いは大量データを厚勝つ時にはList, MapよりもHashTableを使用する方が良いと思っているので、考えたことがありませんです。。。

サンプルコード:ArrayList

Listインターフェースをimplementsしているので下のように書くことができる

    @Test
    public void testAdd() {
        List<String> list = new ArrayList<>();
        list.add("その1");
        list.add("その2");
        list.add("その3");
        list.add("その4");

        for (String st : list) {
            System.out.println(st);
        }
    }

サンプルコード:LinkedList

Listインターフェースをimplementsしているので、newするクラスが別でも、同じメソッドを呼び出すことができる。

    @Test
    public void testAddFirst() {
        List<String> list = new ArrayList<>();
        list.add("aaa");
        list.add("bbb");
        list.add("ccc");

        list.forEach(System.out::println);
    }

Java クラスの書き方〜ワンポイントレッスン的な〜

ズバリ、このように書きます。

ポイントとしては、クラスの要素としても照るのは次のものであります。

  1. フィールド(変数)
  2. メソッド

そして、メインメソッドはstaticがついているので通常のメソッド(インスタンスメソッド)と扱いが違います。
名前の通り、インスタンスメソッドはインスタンス化しないと呼び出せません。

// staticの呼び出し方
クラス名.メソッド名();
// インスタンスメソッドの呼び出し方
クラス名 hensu = new クラス名();
hensu.メソッド名();
/**
 * クラスのJavaDocの記載をするスペース
 */
public class クラス名 {
   /** フィールド変数 */
   public String field;

  /**
   * メソッドのJavaDo記載スペース
   */
   public static void main(String[] args) {
     // コメント
     System.out.println("Hello World");
     // 変数の宣言
     int num;
     // 変数の初期化(宣言して、値を代入している)
     int suji = 1;
     /*
      * 複数行のコメント
      * 「/**」で始まる場合はJavaDocなので注意
      * 下の「for」で始まるコードはループ文です。
      * 俗にいう「forループ」
      */
      for (int i = 0; i < 10; i++) {
         suji += i;
      }
  }
}

※実際にはEclipseやコマンドプロンプトで「javadoc」コマンドを実行してOracleのホームページにあるようなJavaDocを出力します。

クラスの書き方詳細に関しては以下のリンクを参照してください。

クラスの書き方

動画でやって見ました。

関連ページ一覧

Eclipse セットアップ

  1. Java Install Eclipse〜開発ツールのインストール〜
  2. TensorFlow C++環境〜EclipseCDTをインストール〜
  3. Setup OpenGL with JavaJOGLを使う準備 for Eclipse
  4. Eclipse Meven 開発手順〜プロジェクトの作成〜
  5. Java OpenCV 環境セットアップ(on Mac)
  6. Eclipse SceneBuilderを追加する
  7. JavaFX SceneBuilder EclipseSceneBuilder連携~

Java Basic一覧

  1. Java Basic Level 1 〜Hello Java〜
  2. Java Basic Level2 〜Arithmetic Calculate〜
  3. Java Basic Level3 〜About String class〜
  4. Java Basic Level 4〜Boolean〜
  5. Java Basic Level 5〜If Statement〜
  6. Java Basic Summary from Level1 to 5
  7. Java Basic Level 6 〜Traning of If statement〜
  8. Java Basic Level8 〜How to use for statement〜
  9. Java Basic Level 8.5 〜Array〜
  10. Java Basic Level 9〜Training of for statement〜
  11. Java Basic Level 10 〜While statement 〜
  12. Java Basic Swing〜オブジェクト指向〜
  13. Java Basic Swing Level 2〜オブジェクト指向2〜
  14. サンプル実装〜コンソールゲーム〜
  15. Java Basic インターフェース・抽象クラスの作り方
  16. Java Basic クラスとは〜Step2_1〜
  17. Java Basic JUnit 〜テストスイートの作り方〜

Git関連

  1. Java Git clone in Eclipse 〜サンプルの取得〜
  2. Eclipse Gitリポジトリの取得 GitからソースをPullしよう〜
  3. IntelliJ IDEA GitGitリポジトリからクローン〜

Git ヒストリーの見方〜コミットしたソースの変更履歴を見る ワンポイント〜

GitのURLにアクセス

上のキャプチャのように対象ソースを開きます。

右上部分に下のようなものを見つけることができると思います。

ソースの比較

この部分にある「History」とか「ヒストリー」と書いてあるボタンを押下

すると上のような画面が見れます、それぞれコミットした時につけた「コミットコメント」が表示されています。

上が比較してみた時のキャプチャです。このページはこちら(Gitで比較)

Eclipseでもできる

こんな感じです。

関連ページ一覧

Eclipse セットアップ

  1. Java Install Eclipse〜開発ツールのインストール〜
  2. TensorFlow C++環境〜EclipseCDTをインストール〜
  3. Setup OpenGL with JavaJOGLを使う準備 for Eclipse
  4. Eclipse Meven 開発手順〜プロジェクトの作成〜
  5. Java OpenCV 環境セットアップ(on Mac)
  6. Eclipse SceneBuilderを追加する
  7. JavaFX SceneBuilder EclipseSceneBuilder連携~

Java Basic一覧

  1. Java Basic Level 1 〜Hello Java〜
  2. Java Basic Level2 〜Arithmetic Calculate〜
  3. Java Basic Level3 〜About String class〜
  4. Java Basic Level 4〜Boolean〜
  5. Java Basic Level 5〜If Statement〜
  6. Java Basic Summary from Level1 to 5
  7. Java Basic Level 6 〜Traning of If statement〜
  8. Java Basic Level8 〜How to use for statement〜
  9. Java Basic Level 8.5 〜Array〜
  10. Java Basic Level 9〜Training of for statement〜
  11. Java Basic Level 10 〜While statement 〜
  12. Java Basic Swing〜オブジェクト指向〜
  13. Java Basic Swing Level 2〜オブジェクト指向2〜
  14. サンプル実装〜コンソールゲーム〜
  15. Java Basic インターフェース・抽象クラスの作り方
  16. Java Basic クラスとは〜Step2_1〜
  17. Java Basic JUnit 〜テストスイートの作り方〜

Git関連

  1. Java Git clone in Eclipse 〜サンプルの取得〜
  2. Eclipse Gitリポジトリの取得 GitからソースをPullしよう〜
  3. IntelliJ IDEA GitGitリポジトリからクローン〜

Java FX〜ワンポイント TextFieldの作り方〜

javafx.scene.control.TextFieldの作り方

テキストフィールドと言っても何個借ります。Swing, AWT, HTMLなど。。。

一応のためパッケージ名から記載します。これなら確実にJavaFXで使用するテキストフィールドです。JavaDocを参照します。

<ソース>

// 1個目の数値、テキストフィールド
TextField text1 = new TextField();
text1.setPrefColumnCount(3); // 必須ではない
text1.setAlignment(Pos.BASELINE_CENTER); // 必須ではない

<これを使用したコード>

public void start(Stage primaryStage) throws Exception {
    // Stageの設定
    primaryStage.setHeight(VIEW_HEIGHT);
    primaryStage.setWidth(VIEW_WIDTH);
    // レイアウトたて
    VBox vBox = new VBox(5);
    // レイアウト横
    HBox hBox = new HBox(8);
    // ラベルの設定
    Label label = new Label();
    // ハローワールドを出力する
    label.setText(myFirstProgram());
    label.setFont(new Font("RobotRegular", 24));
    vBox.getChildren().add(label);

    // 1個目の数値、テキストフィールド
    TextField text1 = new TextField();
    text1.setPrefColumnCount(3);
    text1.setAlignment(Pos.BASELINE_CENTER);
    hBox.getChildren().add(text1);
    // 計算式のラベル
    Label ope = new Label("+");
    hBox.getChildren().add(ope);

    // 2個目の数値、テキストフィールド
    TextField text2 = new TextField();
    text1.setPrefColumnCount(3);
    text1.setAlignment(Pos.BASELINE_CENTER);
    hBox.getChildren().add(text2);

    // 縦のレイアウトに追加する
    vBox.getChildren().add(hBox);
    // ペインの作成
    Group root = new Group();
    root.getChildren().add(vBox);

    // シーンの作成
    Scene scene = new Scene(root, VIEW_WIDTH, VIEW_HEIGHT);
    primaryStage.setScene(scene);
    primaryStage.show();
}

/**
 * JavaFX版のハローワールド実装用のメソッドになります。
 * @return 画面に出力する文字列
 */
public String myFirstProgram() {
    // この「hyoji = ""」を「"hyoji = "Hello World"」と修正してください。
    String hyoji = "Hello World";
    return hyoji;
}

ちなみにこれは、JavaFXで作成したアプリです。アプリを使用して。このブログのトップページの紹介をしています。

でわでわ。。。

関連ページ一覧

Eclipse セットアップ

  1. Java Install Eclipse〜開発ツールのインストール〜
  2. TensorFlow C++環境〜EclipseCDTをインストール〜
  3. Setup OpenGL with JavaJOGLを使う準備 for Eclipse
  4. Eclipse Meven 開発手順〜プロジェクトの作成〜
  5. Java OpenCV 環境セットアップ(on Mac)
  6. Eclipse SceneBuilderを追加する
  7. JavaFX SceneBuilder EclipseSceneBuilder連携~

Java Basic一覧

  1. Java Basic Level 1 〜Hello Java〜
  2. Java Basic Level2 〜Arithmetic Calculate〜
  3. Java Basic Level3 〜About String class〜
  4. Java Basic Level 4〜Boolean〜
  5. Java Basic Level 5〜If Statement〜
  6. Java Basic Summary from Level1 to 5
  7. Java Basic Level 6 〜Traning of If statement〜
  8. Java Basic Level8 〜How to use for statement〜
  9. Java Basic Level 8.5 〜Array〜
  10. Java Basic Level 9〜Training of for statement〜
  11. Java Basic Level 10 〜While statement 〜
  12. Java Basic Swing〜オブジェクト指向〜
  13. Java Basic Swing Level 2〜オブジェクト指向2〜
  14. サンプル実装〜コンソールゲーム〜
  15. Java Basic インターフェース・抽象クラスの作り方
  16. Java Basic クラスとは〜Step2_1〜
  17. Java Basic JUnit 〜テストスイートの作り方〜

Git関連

  1. Java Git clone in Eclipse 〜サンプルの取得〜
  2. Eclipse Gitリポジトリの取得 GitからソースをPullしよう〜
  3. IntelliJ IDEA GitGitリポジトリからクローン〜

Java String 文字列検索〜ワンポイントレッスン〜

文字列検索

Stringクラスを使用して文字列の検索をします。

public stati void main(String[] args) {
   "abcdefg".indexOf("z"); // 見つからない場合は「-1」
   "abcdefg".indexOf("a"); // 見つかった場合はその位置「0」
   "abcdefg".indexOf("b"); // 見つかった場合はその位置「1」
   "abcdefg".indexOf("c"); // 見つかった場合はその位置「2」
   "abcdefg".indexOf("d"); // 見つかった場合はその位置「3」
   "abcdefg".indexOf("e"); // 見つかった場合はその位置「4」
   "abcdefg".indexOf("f"); // 見つかった場合はその位置「5」
}

こんな感じです。取得する位置(int)は「0」から始まる数値が返されます。

Stringクラスのメソッドを実行した動画リストです。

StringBuilderも使うと便利です。

関連ページ一覧

Eclipse セットアップ

  1. Java Install Eclipse〜開発ツールのインストール〜
  2. TensorFlow C++環境〜EclipseCDTをインストール〜
  3. Setup OpenGL with JavaJOGLを使う準備 for Eclipse
  4. Eclipse Meven 開発手順〜プロジェクトの作成〜
  5. Java OpenCV 環境セットアップ(on Mac)
  6. Eclipse SceneBuilderを追加する
  7. JavaFX SceneBuilder EclipseSceneBuilder連携~

Java Basic一覧

  1. Java Basic Level 1 〜Hello Java〜
  2. Java Basic Level2 〜Arithmetic Calculate〜
  3. Java Basic Level3 〜About String class〜
  4. Java Basic Level 4〜Boolean〜
  5. Java Basic Level 5〜If Statement〜
  6. Java Basic Summary from Level1 to 5
  7. Java Basic Level 6 〜Traning of If statement〜
  8. Java Basic Level8 〜How to use for statement〜
  9. Java Basic Level 8.5 〜Array〜
  10. Java Basic Level 9〜Training of for statement〜
  11. Java Basic Level 10 〜While statement 〜
  12. Java Basic Swing〜オブジェクト指向〜
  13. Java Basic Swing Level 2〜オブジェクト指向2〜
  14. サンプル実装〜コンソールゲーム〜
  15. Java Basic インターフェース・抽象クラスの作り方
  16. Java Basic クラスとは〜Step2_1〜
  17. Java Basic JUnit 〜テストスイートの作り方〜

Git関連

  1. Java Git clone in Eclipse 〜サンプルの取得〜
  2. Eclipse Gitリポジトリの取得 GitからソースをPullしよう〜
  3. IntelliJ IDEA GitGitリポジトリからクローン〜