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 インデックスの登録からプッシュまで

  • ブランチの作成f:id:wdstudynote:20190408215940p:plain

新規ブランチにてブランチを作成する

f:id:wdstudynote:20190408220212p:plain

ブランチのプッシュにてブランチがプッシュできる。

f:id:wdstudynote:20190408220352p:plain

 

  • インデックスの登録とコミット

コミットを試すため適当にファイルを作成する。

f:id:wdstudynote:20190408220909p:plain

コミットを選択するとGitステージングが表示される。

f:id:wdstudynote:20190408220930p:plain

追加したフォルダとファイルが「ステージされてない変更」に表示される。

「ステージされてない変更」の右にある++を押下すると一括でステージされる。

f:id:wdstudynote:20190408220948p:plain

コメント、作成者、コミッターを入力し「コミット」を押下する。

 

  • プッシュ

f:id:wdstudynote:20190408221640p:plain

プッシュを選択する。

f:id:wdstudynote:20190408221753p:plain

wrkブランチにプッシュされる。

 

GitHub リポジトリの登録からeclipseへのインポート

 アカウントを登録し、画面右上のメニューから「New repository」を選択する。

f:id:wdstudynote:20190408063434p:plain

Repository nameにリポジトリ名を入力する。

Public/Privateを選択する。※Privateにて作成してもあとでPublicを生成できる。

f:id:wdstudynote:20190408063457p:plain

「create a new file」にてファイルを生成するとmasterブランチが生成される。

リポジトリの登録にて「initialize this repository with a README」にチェックを入れておけば、Readme.mdが作成されmasterブランチが生成される。

 

 eclipseパースペクティブのGitを開き、クローンする。

f:id:wdstudynote:20190408063429p:plain

ローカルリポジトリが生成される。

 

 「フォルダーまたはアーカイブからプロジェクト」にてインポートする。

f:id:wdstudynote:20190408063446p:plain

※「Gitからプロジェクト」にて「新規プロジェクト・ウィザードを使用してインポート」を選択すると「Connecting Git team provider failed」が発生する。

「一般的なプロジェクトしてインポート」すると回避できる。

f:id:wdstudynote:20190408071826p:plain