Java Streamの終端操作について
Streamの終端操作を使ってみた
・allMatch
全要素が条件を満たすか
Stream<String> list = Stream.of("aa", "ab", "ac", "ad", "ae"); boolean res = list.allMatch(i -> i.contains("a")); System.out.println(res);
・anyMatch
いずれかの要素が条件を満たすか
Stream<String> list = Stream.of("a", "b", "c", "d", "e"); boolean res = list.anyMatch(i -> i.contains("a")); System.out.println(res);
・noneMatch
全ての要素が条件を満たさないか
Stream<String> list = Stream.of("a", "b", "c", "d", "e"); boolean res = list.noneMatch(i -> i.contains("x")); System.out.println(res);
・count
要素数カウント
Stream<String> list = Stream.of("a", "b", "c", "d", "e"); long res = list.count(); System.out.println(res);
・findAny
要素のどれかを返却
※並列でない場合findFirstとだぶん同じ
Stream<String> list = Stream.of("a", "b", "c", "d", "e"); String res = list.findAny().orElse(""); System.out.println(res);
・findFirst
先頭の要素を返却
Stream<String> list = Stream.of("a", "b", "c", "d", "e"); String res = list.findFirst().orElse(""); System.out.println(res);
・max
最大の要素を返却
Stream<String> list = Stream.of("a", "b", "c", "d", "e"); String res = list.max((i1, i2) -> i1.compareTo(i2)).orElse(""); System.out.println(res);
・min
最小の要素を返却
Stream<String> list = Stream.of("a", "b", "c", "d", "e"); String res = list.min((i1, i2) -> i1.compareTo(i2)).orElse(""); System.out.println(res);
・reduce
要素を処理して同一型の要素に変換、減数していく。
合計、べき乗計算、文字列長の合算。。。用途が思いつかない
Stream<String> list = Stream.of("a", "b", "c", "d", "e"); String res = list.reduce((i1, i2) -> i1 + i2).orElse(""); System.out.println(res);
・sum
合計を求める
Stream<Integer> list = Stream.of(1, 2, 3, 4, 5); long res = list.mapToInt(i -> Integer.valueOf(i)).sum(); System.out.println(res);
・toArray
配列に変換
Stream<String> list = Stream.of("a", "b", "c", "d", "e"); String[] res = list.toArray(String[]::new); System.out.println(res[0]);
・spliterator
イテレータ取得
並列処理用?
Stream<String> list = Stream.of("a", "b", "c", "d", "e"); Spliterator<String> res = list.spliterator(); res.forEachRemaining(i -> System.out.println(i));
Java Streamの中間操作について
Streamの中間操作について動作を確認する
・skip
先頭をスキップする
List<String> list = new ArrayList<>(); list = Arrays.asList("f", "a", "b", "c", "d", "e"); list.stream().skip(1).forEach(i -> System.out.println(i));
・limit
サイズにて切り出す
List<String> list = new ArrayList<>(); list = Arrays.asList("a", "b", "c", "d", "e", "f"); list.stream().limit(5).forEach(i -> System.out.println(i));
・distinct
重複除去
List<String> list = new ArrayList<>(); list = Arrays.asList("a", "b", "c", "d", "e", "c"); list.stream().distinct().forEach(i -> System.out.println(i));
・filter
フィルタ処理
List<String> list = new ArrayList<>(); list = Arrays.asList("a", "b", "c", "d", "e", "f"); list.stream().filter(i -> i != "f").forEach(i -> System.out.println(i));
・sorted
ソートする
List<String> list = new ArrayList<>(); list = Arrays.asList("e", "d", "c", "b", "a"); list.stream().sorted((i, j) -> i.compareTo(j)).forEach(i -> System.out.println(i));
・map
別の型へ変換
List<String> list = new ArrayList<>(); list = Arrays.asList("a", "b", "c", "d", "e"); list.stream().map(i -> i + i).forEach(i -> System.out.println(i));
・flatMap
1体Nの型変換
List<String> list = new ArrayList<>(); list = Arrays.asList("a", "b", "c", "d", "e"); list.stream().flatMap(i -> Stream.of(i, i)).forEach(i -> System.out.println(i));
・peek
編集しない中間処理
内容の出力等で使用
List<String> list = new ArrayList<>(); list = Arrays.asList("a", "b", "c", "d", "e"); list.stream().peek(i -> System.out.println(i)).forEach(i -> System.out.println(i));
GitHub インデックスの登録からプッシュまで
- ブランチの作成
新規ブランチにてブランチを作成する
ブランチのプッシュにてブランチがプッシュできる。
- インデックスの登録とコミット
コミットを試すため適当にファイルを作成する。
コミットを選択するとGitステージングが表示される。
追加したフォルダとファイルが「ステージされてない変更」に表示される。
「ステージされてない変更」の右にある++を押下すると一括でステージされる。
コメント、作成者、コミッターを入力し「コミット」を押下する。
- プッシュ
プッシュを選択する。
wrkブランチにプッシュされる。
GitHub リポジトリの登録からeclipseへのインポート
- リポジトリの登録
アカウントを登録し、画面右上のメニューから「New repository」を選択する。
Repository nameにリポジトリ名を入力する。
Public/Privateを選択する。※Privateにて作成してもあとでPublicを生成できる。
「create a new file」にてファイルを生成するとmasterブランチが生成される。
リポジトリの登録にて「initialize this repository with a README」にチェックを入れておけば、Readme.mdが作成されmasterブランチが生成される。
- Git リポジトリのクローン
eclipseのパースペクティブのGitを開き、クローンする。
ローカルリポジトリが生成される。
- eclipseへのインポート
「フォルダーまたはアーカイブからプロジェクト」にてインポートする。
※「Gitからプロジェクト」にて「新規プロジェクト・ウィザードを使用してインポート」を選択すると「Connecting Git team provider failed」が発生する。
「一般的なプロジェクトしてインポート」すると回避できる。