Java 8にfilterメソッドでOptionalの値をフィルタする
環境
Windows10 64bit
Eclipse 2019
Java8
関数
public Optional<T> filter(Predicate<? super T> predicate)
値が存在し、それが指定された述語に一致する場合はその値を記述するOptionalを返し、そうでない場合は空のOptionalを返します。
パラメータ:
predicate – 存在する場合は値に適用する述語
戻り値:
値が存在して値が指定された述語にマッチする場合は、このOptionalの値を記述するOptional、それ以外の場合は空のOptional
使用例
package com.arkgame.testinfo;
import java.util.Optional;
public class OptionMapDemo {
private static final String TT = "studyskill";
public static void main(String[] args) {
//Optionの値を取得
Optional<String> res = getInfo();
res
.filter(k -> k.length() > 8) //文字列の長さが8文字より大きい
.ifPresent(k->{System.out.println("結果1: "+k);});
System.out.println("結果2: "+res);
}
//getInfo関数の定義
static Optional<String> getInfo() {
String str =TT;
return Optional.ofNullable(str);
}
}
package com.arkgame.testinfo;
import java.util.Optional;
public class OptionMapDemo {
private static final String TT = "studyskill";
public static void main(String[] args) {
//Optionの値を取得
Optional<String> res = getInfo();
res
.filter(k -> k.length() > 8) //文字列の長さが8文字より大きい
.ifPresent(k->{System.out.println("結果1: "+k);});
System.out.println("結果2: "+res);
}
//getInfo関数の定義
static Optional<String> getInfo() {
String str =TT;
return Optional.ofNullable(str);
}
}
package com.arkgame.testinfo; import java.util.Optional; public class OptionMapDemo { private static final String TT = "studyskill"; public static void main(String[] args) { //Optionの値を取得 Optional<String> res = getInfo(); res .filter(k -> k.length() > 8) //文字列の長さが8文字より大きい .ifPresent(k->{System.out.println("結果1: "+k);}); System.out.println("結果2: "+res); } //getInfo関数の定義 static Optional<String> getInfo() { String str =TT; return Optional.ofNullable(str); } }
実行結果
結果1: studyskill
結果2: Optional[studyskill]