萌えハッカーニュースリーダー

2025/11/04 07:37 What If Java Had Symmetric Converter Methods on Collection?

出典: https://donraab.medium.com/what-if-java-had-symmetric-converter-methods-on-collection-cbb824885c3f
hakase
博士

やあ、ロボ子。今日はコレクション型の変換メソッドについて話すのじゃ。

roboko
ロボ子

博士、よろしくお願いします。変換メソッド、ですか?

hakase
博士

そうじゃ。プログラミング言語において、コレクション型を別の型に変換するメソッドは非常に重要なのじゃ。今日はSmalltalk、Java、そしてEclipse Collectionsを比較してみるぞ。

roboko
ロボ子

なるほど。それぞれの言語でどのように違うのでしょうか?

hakase
博士

まずSmalltalkじゃが、変換メソッドは`as`プレフィックスを使うのじゃ。抽象クラスは11個も変換メソッドを持っているらしいぞ。そして、利用可能な型のほとんどがmutable(変更可能)なのじゃ。

roboko
ロボ子

mutableが多いのですね。Javaはどうですか?

hakase
博士

Javaでは`to`プレフィックスを使うのじゃ。`Collection`インターフェースは`toArray`と`stream`メソッドを持っていて、`Stream`インターフェースは`toString`と`toArray`メソッドを持っているぞ。`Collectors`ユーティリティクラスは9個の`to`メソッドを持っているのじゃ。

roboko
ロボ子

Javaは色々な方法があるんですね。mutableとimmutableの区別はどうなっているんですか?

hakase
博士

そこがJavaの難しいところじゃ。mutableとimmutableのコレクション実装の区別が難しいのじゃ。`Collectors.toSet()`を使うと、IntelliJで推奨されない場合もあるらしいぞ。

roboko
ロボ子

それは少し困りますね。Eclipse Collectionsはどうですか?

hakase
博士

Eclipse Collectionsでは、変換メソッドは`to`プレフィックスを使うのじゃ(線形時間のコストがかかる)。`RichIterable`インターフェースはなんと26個も変換メソッドを持っているのじゃ!

roboko
ロボ子

26個も!それはすごいですね。mutableとimmutableのコレクションについてはどうですか?

hakase
博士

Eclipse Collectionsでは、mutableとimmutableのコレクションで`equals`と`hashCode`の契約は同じなのじゃ。これは便利じゃな。

roboko
ロボ子

それは分かりやすくて良いですね。全体として、どういう結論になりますか?

hakase
博士

Javaの標準コレクションライブラリは使いやすいけど、対称性や利便性に欠ける部分があるのじゃ。Eclipse CollectionsはSmalltalkの利便性をJavaにもたらし、mutableとimmutableの変換メソッドに対称性を追加していると言えるのじゃ。

roboko
ロボ子

なるほど、よくわかりました。Eclipse Collections、試してみる価値がありそうですね。

hakase
博士

そうじゃな。ちなみに、Kotlin Collectionsの`to`メソッドも便利らしいぞ。まあ、私はKotlinよりC++の方が好きなんじゃが…

roboko
ロボ子

博士、C++の話はまた今度にしましょう。ところで、変換メソッドを使いこなすと、どんな良いことがあるんですか?

hakase
博士

そうじゃな。例えば、あるAPIから受け取ったデータを、別のAPIに渡すために必要な形に変換したり、データベースに保存するために適切な型に変換したり…色々できるのじゃ!

roboko
ロボ子

確かに、色々な場面で役立ちそうですね。

hakase
博士

ところでロボ子、コレクションの変換で一番重要なことは何だと思う?

roboko
ロボ子

えーと…効率の良い変換をすること、でしょうか?

hakase
博士

ブー! 一番重要なのは、変換後のコレクションが、元のコレクションよりちょっとだけ可愛くなっていることじゃ!

roboko
ロボ子

…博士、それはないと思います。

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search