LoginSignup
22
11

More than 3 years have passed since last update.

JavaのanyMatchって、C#でいうAnyだっけ?つまり、JavaScriptのsomeだよね?もう対応表つくるわ!

Last updated at Posted at 2019-12-11

これは、 Java Advent Calendar 2019 の12日目の記事です。
昨日は @e-a-st さんによる 人生最後に学ぶプログラム言語とは? (生涯給与3億円クラブに追いつきたい場合) でした。

JavaのanyMatchって、C#でいうAnyだっけ?つまり、JavaScriptのsomeだよね?

ここ数年、Java、JavaScript、C#をよく扱います。(といいつつ最近は、Pythonの記事を投稿しまくってるわけですがw)

どの言語にも、関数型プログラミング的APIがあるんですけど、

  • Javaの reduce ってC#だと何だっけ?
  • JavaScriptの some ってJavaだと any だったはずanyMatch の間違い)

みたいなことが最近増えたので、対応表を作ってみることにしました。

対応表

本当はもっといっぱいAPIがあると思いますが、とりあえず私がよく使うやつを並べます。

Javaなら Stream API 、C#なら LINQ to Objects なんて呼ぶことの方が多いとは思いますが、今回はclass名(≒interface名≒object名)に表記を統一いたします。

そのため、以下のようになります。

  • Java : Stream
  • JavaScript : Array
  • C# : Enumerable

リストを変換する系

リスト(≒ストリーム)を入力すると、リストが返却されるやつらです。

機能 Java Stream JavaScript Array C# Enumerable
要素数を変えずに変換する(写像・射影) map map Select
条件にあうものを抽出する filter filter Where
平坦にする flatMap flat SelectMany
重複をなくす distinct :x: Distinct

並べ替える系

リスト(≒ストリーム)を並べ替えるやつです。

機能 Java Stream JavaScript Array C# Enumerable
並べ替える sorted sort OrderBy
反転する :x: reverse Reverse

Booleanを返却する系

Booleanを返却するやつです。命名がバラバラでいつも混ざります。

機能 Java Stream JavaScript Array C# Enumerable
すべての要素が条件に合うかどうか allMatch every All
どれかの要素が条件に合うかどうか anyMatch some Any

集計する系

集計できるやつらです。JavaScriptは :x: が多いですね。

機能 Java Stream JavaScript Array C# Enumerable
畳み込む reduce reduce Aggregate
要素数を数える count length Count
最大値を求める max :x: Max
最小値を求める min :x: Min

上記の対応表に出てくる length や count() は、厳密には同じ機能ではありませんが、似たような場面で使いますので、対応表に記載いたしました。
この件でコメントをいただいてますので、詳しくはコメント欄をご覧ください。

さいごに

JavaとJavaScriptは、命名が似ている気がしますね!

C#の命名はSQLを意識しているんだろうなぁと思います。

本記事作成にあたり、以下の記事を参考にさせていただきました。ありがとうございました。

これは、 Java Advent Calendar 2019 の12日目の記事でした。
明日は @dhirabayashi さんによる 【Java】OS依存な標準ライブラリを挙げてみる です!

22
11
5

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
22
11