==[[言語まとめ Java]]==
[[言語 まとめ]] | [[Java]]|
{{amazon|4798151122}}
===準備===
====参照サイト====
=====クラス=====
*継承
====ラムダ式/Stream API====
*Java8以降では、メソッドも型の一つ
*メソッドを引数として渡すこともできる。
|Predicate||真偽値を返す。引数あり。
|-
|OperatorBinaryOperator||演算結果を返す。引数2つあり。
|-
|UnaryOperator||演算結果を返す。引数1つ。
|}
import java.util.function.*;
public class BuildInFuncInf {
public static void main(String[] args) {
String[] num = {"1","2","3"};
printFunc(num, (value) -> Integer.parseInt(value) * 10 );
printFunc(num, (value) -> (int)Math.pow(Integer.parseInt(value),2) );
}
/**
* Stringを引数にとり、Integerを返す関数インターフェース
*/
public static void printFunc(String[] params, Function<String, Integer> func) {
for(String param : params) {
System.out.println(String.format("%d", func.apply(param)));
}
}
}
*実行結果
10
20
30
1
4
9
=====ラムダ式の簡単化=====
*本体が一文である場合、{}を省略できる
*文の戻り値が暗黙的に戻り値とみなされる
*引数型は暗黙で類推されるので省略するのが一般的
*引数が1つの場合、くくるかっこも省略できる
*引数がない場合はかっこを省略できない
=====ラムダ式を伴うコレクションのメソッド=====
{|class="wikitable"
!メソッド!!内容
|-
|replaceAll||指定されたルールで置き換え
|-
|removeIf||合致した要素を削除
|-
|compute/comuteIfPresent/comupteIfAbsent||マップに処理の結果を設定
|-
|merge||重複したキーの値を加工
|}
*replaceAll
var list = Arrays.asList("0,1,2", "3,4,5", "6,7,8")
list.replaceAll(v -> v.replace(',','-'));
System.out.println("replaceAll : " + list);
replaceAll : [0-1-2, 3-4-5, 6-7-8]
*compute
var map = new HashMap<String, String>(Map.of(
"1", "a",
"2", "b",
"3", "c"));
map.compute("2", (k,v) -> k + v);
System.out.println(map);
{1=a, 2=2b, 3=c}
===Stream API===
*コレクションなどのデータソースから繰り返し処理をStreamに引き渡す
*処理の流れは
#ストリーム生成
#中間処理:抽出、加工
#終端処理:出力、集計
var list = Arrays.asList(0,1,2,3,4,5);
list.stream()
.filter(num -> num % 2 == 0)
.map(num -> (int)Math.pow(num, 2))
.forEach(System.out::println);
0
4
16
====ファイル====
=====ファイルを読む=====
=====ファイルに書く=====