さて、今回から GDK が Collection に追加しているメソッドを見ていきます。 Object クラスに追加されているメソッドも、オーバライドされているものはまた扱います。
目次
- 集合演算
- 文字列関連
- 要素の追加・削除
- 要素の検索 findXxxx()
- 要素の蒐集 collectXxxx()
- その他集合生成 multiply(), unique(), sort()
- Reduce 処理
- 多重コレクション
- 型変換
分類はあくまで目安っす。 今回あつかうメソッドは集合演算と文字列関連のメソッド:
// 集合演算 boolean asBoolean() boolean isCase(Object switchValue) boolean containsAll(Object[] items) Collection intersect(Collection right) boolean disjoint(Collection right) // 文字列関連 String join(String separator) String toListString() String toListString(int maxSize)
集合演算
まずは集合演算に関するメソッド:メソッド | 返り値 | since | 説明 |
---|---|---|---|
asBoolean() | boolean | 1.7.0 | 空集合なら falseを、そうでないなら true を返す |
isCase(Object) | boolean | 1.0 | 引数の要素を含んでいるかどうか |
containsAll(Object[]) | boolean | 1.7.2 | 引数の配列の全要素を含んでいるかどうか |
intersect(Collection) | Collection | 1.5.6 | 引数の集合との共通部分を返す |
disjoint(Collection) | boolean | 1.0 | 引数の集合と共通部分がないかどうか |
asBoolean() メソッド
asBoolean() メソッドは Object クラスでもでてきましたが、コレションでは空集合なら false、要素を持てば true を返します:assert [0].asBoolean() == true assert [].asBoolean() == false
isCase() メソッド
isCase() も Object クラスに定義されていたメソッドですが、コレクションの場合は引数のオブジェクトがこのコレクションの要素として含まれているなら true を、そうでないなら false を返します。 このメソッドは in キーワードや switch 文の case 節で使います:def list1 = (0..10) // [0, 1, 2, 3, ... , 10] assert list1.isCase(0) assert 0 in list1
containsAll() メソッド
containsAll(Object[]) メソッドは通常の Collection のメソッドに同名のものがありますが、集合ではなく配列を引数としてとれるようにしたメソッドです。 使い方は同じですが。def list1 = (0..10) def array = [2, 4] as Object[] assert list1.containsAll(array) assert list1.containsAll(1, 3, 7)
1つ目は無理して配列にしてますが、コレクションでできるならコレクションで。 Groovy では最後の引数がが配列なら可変長引数としてあつかえるので、2つ目ではオブジェクトをそのまま渡してます。 まぁ、このためにあるメソッドなんでしょうね。
intersect() メソッド
intersect() メソッドは引数のコレクションとの共通部分を返すメソッドです。def list1 = (0..10) def list2 = (0..20).findAll{ it % 2 == 0 } assert list1.intersect(list2) == [0, 2, 4, 6, 8, 10]
もともとの Java 標準 API にもあってよさそうなメソッドですが・・・
disjoint() メソッド
disjoint() は引数のコレクションと共通部分がないかどうかを返します。 ない場合は true です。def list1 = (0..10) def list2 = (0..20).findAll{ it % 2 == 0 } assert list1.disjoint(30..40) assert !list1.disjoint(list2)
文字列関連
次は文字列関連のメソッド。メソッド | 返り値 | since | 説明 |
---|---|---|---|
toListString() toListString(int) |
String | 1.0 1.73 |
リスト形式の文字列を返す |
join(String) | String | 1.0 | 要素の toString() を引数の文字列で連結して返す |
def langs = ['Java', 'Groovy', 'Scala', 'Clojure'] // toListString() assert langs.toListString() == '[Java, Groovy, Scala, Clojure]' assert langs.toListString(15) == '[Java, Groovy, Scala, ...]' // join() assert langs.join('-') == 'Java-Groovy-Scala-Clojure'
int 値をとる toListString() メソッドは括弧[]で囲まれた文字列がおおよそ指定した文字数になる箇所で切って、残りを ... にします。 キッチリ指定した文字数にはならないもよう。 これらはデバッグとかで多用しそう。
次回は要素の追加とかかな?

- 作者: 関谷和愛,上原潤二,須江信洋,中野靖治
- 出版社/メーカー: 技術評論社
- 発売日: 2011/07/06
- メディア: 単行本(ソフトカバー)
- 購入: 6人 クリック: 392回
- この商品を含むブログ (155件) を見る