今回は Groovy でリスト (java.util.List) に追加されているメソッドのうち、以前に紹介しなかったものについて見ていきます。 Groovy JDK を参考にしています(一覧)。
- 作者: Dierk Konig,Andrew Glover,Paul King,Guillaume Laforge,Jon Skeet,杉浦孝,櫻井正樹,須江信洋,関谷和愛,佐野徹郎,寺沢尚史
- 出版社/メーカー: 毎日コミュニケーションズ
- 発売日: 2008/09/27
- メディア: 単行本(ソフトカバー)
- 購入: 5人 クリック: 146回
- この商品を含むブログ (121件) を見る
List を返すメソッド(オーバーライドしているもの)
ここでは、List を返すメソッドのうち、Collection のメソッドをオーバーライドしているものを見ていきます。
メソッド名 | 返り値 | メソッド名 (Generics) |
返り値 (Generics) |
|
---|---|---|---|---|
asImmutable() | List | asImmutable() | List<E> | |
asSynchronized() | List | asSynchronized() | List<E> |
これら以外にも、前回みたメソッドのうち Collection を返すもの(→)も、List に対して呼び出せば List を返します*1。
- each(Closure), eachWithIndex(Closure)
- intersect(Collection)
- findAll(Closure)
- collect(Collection, Closure)
- unique(), unique(Comparator), unique(Closure)
- grep(Object)
List に定義されたList, Set を返すメソッド
メソッド名 | 返り値 | メソッド名 (Generics) |
返り値 (Generics) |
|
---|---|---|---|---|
reverse() | List | reverse() | List<E> | |
reverseEach(Closure) | List | reverseEach(Closure) | List<E> | |
subsequences() | Set | subsequences() | Set<List<E>> | |
permutations() | Set | permutations() | Set<List<E>> | |
transpose() | List | transpose() | List<List<E>> |
list = [1, 2, 3]; //***** reverse(), reverseEach() ***** assert list.reverse() == [3, 2, 1]; s = ''; list.reverseEach{ s += it }; assert s == '321'; //***** subsequence() ***** assert list.subsequences() == ([[1], [2], [3], [1, 2], [1, 3], [2, 3], [1, 2, 3]] as Set); assert list.subsequences().size() == 2.power(list.size()) - 1; // 2^n - 1 (-1は空集合を除くため) //***** permutations() ***** assert list.permutations() == ([[1, 2, 3], [2, 3, 1], [3, 2, 1], [3, 1, 2], [2, 1, 3], [1, 3, 2]] as Set); n = 1; 1.upto(list.size()){ n *= it } assert list.permutations().size() == n; //***** transpose() ***** matrix = [[11, 12], [21, 22]]; tmatrix = matrix.transpose(); assert tmatrix == [[11, 21], [12, 22]]; 0.upto(matrix.size()-1){ i -> 0.upto(matrix[i].size()-1){ j -> assert tmatrix[i][j] == matrix[j][i]; } }
- subsequences() は List としての部分集合すべてを返します。 ただし、空リストは除きます。
- permutations() は置換リストを全てかえします。 高校数学でやった nPr ってやつ。
- transpose() は、2重リスト、つまり行列 (matrix) に対して呼び出せて、その転置行列、つまり行と列を入れ替えたものを返します。
Queue としてのメソッド
以前見た getAt(), putAt() メソッド以外に、スタックやキューとして扱うための要素取得・設定メソッドも定義されています。
メソッド名 | 返り値 | メソッド名 (Generics) |
返り値 (Generics) |
|
---|---|---|---|---|
first() | Object | first() | E | |
last() | Object | last() | E | |
head() | Object | head() | E | |
tail() | List | tail() | List<E> | |
pop() | Object | pop() | E | |
push(Object) | boolean | push(E) | boolean |
list = [1, 2, 3]; //***** first(), last(), head(), tail() ***** assert list.first() == 1; assert list.last() == 3; assert list.head() == 1; assert list.tail() == [2, 3]; //***** push(), pop() ***** list.push(4); assert list == [1, 2, 3, 4]; poped = list.pop(); assert poped == 4; assert list == [1, 2, 3];
その他のメソッド
メソッド名 | 返り値 | メソッド名 (Generics) |
返り値 (Generics) |
|
---|---|---|---|---|
equals(Object[]) equals(List) |
boolean | equals(E[]) equals(List<E>) |
boolean | |
execute() execute(String[], File) execute(List, File) |
Process | execute() execute(String[], File) execute(List, File) |
Process |