配列でforEach
Arrays.stream(配列の変数名).forEach
import java.util.Arrays;
//省略
public void forEachTest() {
String[] sampleArray ={"aaa", "bbb", "ccc"};
Arrays.stream(sampleArray).forEach(s -> System.out.println(s));
}
コンパイルエラー
forEachはvoid メソッドの為、値を戻すことができません
public Boolean forEachTest() {
String[] sampleArray ={"aaa", "bbb", "ccc"};
Arrays.stream(sampleArray).forEach(s -> {
//↓コンパイルエラー:void メソッドは値を戻すことができません
if(s=="aaa") {return true;}
});
return false;
}
外側のスコープで定義されたローカル変数※ result は final または実質的に final でなければなりません
→※メンバ変数にすればfinalでなくてもエラーにならない。
public String forEachTest() {
String[] sampleArray ={"aaa", "bbb", "ccc"};
String result="aaaを含まない";//メンバ変数にすればfinalでなくてもエラーにならない。
Arrays.stream(sampleArray).forEach(s -> {
//↓コンパイルエラー:外側のスコープで定義されたローカル変数 result は final または実質的に final でなければなりません
if(s=="aaa") {result="aaaを含む";}
});
return result;
}
Java - Lambda、匿名クラスでfinal変数を参照する必要がある理由
スレッド
アトミック変数とは
拡張for文を使用
public Boolean forTest() {
String[] sampleArray ={"aaa", "bbb", "ccc"};
String result="aaaを含まない";
for(String s : sampleArray) {
if(s=="aaa") {
result "aaaを含む";
return true;
}
}
return false;
}