gouf
11/21/2016 - 1:43 PM

同クラスの各インスタンスから、共通であるインスタンスメソッドを呼び出して、特定の結果を得る

同クラスの各インスタンスから、共通であるインスタンスメソッドを呼び出して、特定の結果を得る

// ./myClass/MyClass.java
package myClass;
public class MyClass {

  private Boolean checked;
  private String name;

  public Boolean isChecked() {
    return checked;
  }

  public String getName() {
    return this.name;
  }
  public MyClass(String _name, Boolean _checked) {
    this.checked = _checked;
    this.name = _name;
  }
}
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.stream.Stream;
import myClass.MyClass;

class Main {
  public static void main(String []args) {
    // 特定のクラスのインスタンスを想定
    MyClass button1 = new MyClass("Alice", false);
    MyClass button2 = new MyClass("Ivan", true);
    MyClass button3 = new MyClass("Bob", false);

    // リストに格納
    List<MyClass> buttonList = Arrays.asList(
        button1,
        button2,
        button3
      );

    /*
     * ここでリストを順次処理して
     * 共通しているインスタンスのメソッドを呼び出す
     * filter に合致する条件をもとに、そこからmap で当該要素の名前を得る
     */

    String resultName = buttonList.stream()
      .filter((button) -> {
        return button.isChecked();
      })
      .map((button) -> {
        return button.getName();
      })
      .findFirst()
      .get();

    System.out.println(resultName); // => "Ivan"
  }
}