2019年7月8日月曜日

JavaのStreamAPIメモ [1]

どうも、もりもりです。

Java8でStreamAPIやラムダ式が使えるようになってからだいぶ経ちましたが
C#やVB.NETばかりでやらしてもらってますので
Streamは知ってても使ったことがないんですね~。
なのでメモ。

C#erならLINQを使えて当たり前。
なのでJavaerはStreamを使えて当たり前なのでしょう。

では下記C#のようなコードをJavaで書いたらどうなるのか?

using System;
using System.Collections.Generic;
using System.Linq;

namespace LINQSample
{
    class Program
    {
        static void Main(string[] args)
        {
            // 偶数を取得
            var list1 = new List<int> {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
            var list2 = list1.Where(x => x % 2 == 0);
            list2.ToList().ForEach(x => Console.WriteLine(x));
        }
    }
}

下記がJavaですね。

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.*;

class StreamSample {
    public static void main(String args[]) {
        // 偶数を取得
        List<integer> list1 = new ArrayList<integer>(Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10));
        Stream<integer> list2 = list1.stream().filter(x -> x % 2 == 0);
        list2.forEach(x -> System.out.println(x));
    }
}


出力結果
2 4 6 8 10

ふむふむ。
stream()をカマさないとダメなわけですね。
少し面倒かも。。。

他にもいろいろと試したかったのですが
VS Codeのバージョンアップで1.36.0となり
(長い間更新してなかった。。。)
設定がガラっと変わってしまったり
一部の機能が使えなくなってしまったりと
そちらに時間を取られてしまいました。。。

なので次回以降でC#のLINQとの書き方の違いなどをもう少し掘り下げて
メモっていきます。

ちなみに、Javaの使い手をJavaerなんて書きましたが
他の言語の呼び名なんか見てみるとおもしろいですね。

 PHP:PHPer(ペチパー)・・・ペチパーて
 Python:Pythonista(パイソニスタ)、Pythonian(パイソニアン)・・・呼ばれたい
 JavaScript:JSer(ジェイサー)・・・なんかかっこいい
 Go:eGoist(エゴイスト)・・・ヤバw
 AWK:awker(オーカー)・・・The Walking Dead観たい気分になるね
 Scala:Scalalian(スカラリアン)、Scalman(スカルマン)・・・ホラーマンみたいな感じ?
 Visual Basic:VBer(ヴィーバー)・・・歯が出てそう


他にもいろいろあるようですが、こんな感じらしいですわ。



0 件のコメント:

コメントを投稿