Javaコレクション #01 Collections Framework & Arrays

 Java
2013.08.06

Javaなみなさんへ送る、Java Collections Framework 紹介コーナー。
第一回は記事冒頭の意訳と、Arraysクラスについて。

 

 

さて、The Collections Framework。冒頭にはこんなことが書いてあります。

コレクションフレームワークとは、コレクションを表現したり操作したりする手段をまとめたものです。
まったく異なる何かを集めたコレクションであっても、同じように処理することができます。

このフレームワークを利用することで
・プログラムがより簡単になり、パフォーマンスまでもが向上します
・これまで互換性のなかったAPIを、繋ぐことができます
・新しいAPIをデザインしたり、それを学ぶことを容易にします
・ソフトウェアの再利用性が高まります

このフレームワークは、14つのインタフェースに基づいています。
そしてもちろん、そのインターフェースの実装と処理に必要なアルゴリズムを含んでいます。

 

なにこれ、(・∀・)イイ!! (使わない理由はないですね!慣れてきたらGuavaも!)

 

Array of BirdsArray of Birds / Quasic

 

ということで実際にひとつ、配列に関するアルゴリズム集をみてみましょう。Arraysクラス。

Java Doc: Arrays (Java Platform SE 6)

 

asList, binarySearch, deepEquals, fill, sort と便利そうなクラスメソッド目白押しですね。
中でも個人的によく使うのは asList。

List<String> fruits = new ArrayList<String>();
fruits.add("apple");
fruits.add("grape");
fruits.add("banana");

こう書いていたのが

List<String> fruits = Arrays.asList("apple", "grape", "banana");

こう書けます。

 

列挙型(enum)であれば Arrays.asList(values());と全要素を一行でコレクションにしたり、
CollectionやListが引数のメソッドへ一要素を渡すときにも便利。

boolean cotainsMelon = ! Collections.disjoint(fruits, Arrays.asList("melon"));

みたいな。

 

 

ただ、Arrays.asListで生成したListは固定サイズであり、要素の追加削除ができません

影響範囲がぱっと見わかりやすい限定的なスコープでの使用がよさそうです。