リストの使用
リストはオブジェクトの順序付けられたコレクションです。 Groovyの四角カッコ表記と、次のような各リスト要素を区切るカンマを使用して、オブジェクトのリストを作成できます:
// Define a list of numbers
def list = [101, 334, 1208, 20]
もちろん、リストにも文字列を使用できます:
// Define a list of strings
def names = ['Steve','Paul','Jane','Josie']
必要に応じて、リストには、文字列と数値の混在など、異種のオブジェクト・タイプのセットを含め、任意のタイプのオブジェクトを含めることができます。
リスト内の特定の要素を参照するには、次のような整数引数の大カッコを使用します。
// Store the third name in the list in a variable
def thirdName = names[2] // zero based index!
リストはゼロ・ベースであるため、list
[0]
はリストの最初の要素で、list
[5]
は6つの要素です。 もちろん、次のように変数をオペランドの値として渡すこともできます:
for (j in 2..3) {
def curName = names[j]
// do something with curName value here
}
特定のリスト・アイテムの値を更新するには、添字と代入演算子の組合せを使用できます:
names[2] = 'John'
リストの最後にエントリを追加するには、add()
メソッドを使用します:
names.add('Ringo')
リストには重複を含めることができるため、次のようなコードを記述すると、文字列Ringo
がリストに2回追加されます:
// This will add 'Ringo' twice to the list!
names.add('Ringo')
names.add('Ringo')
リストにエントリがすでに存在するかどうかをテストするには、contains()
関数を使用します。 この方法で、重複が目的に適していない場合、同じ品目を2回追加しないようにできます:
// The exclamation point is the "not" operator, so this
// first checks if the 'names' list does NOT contain 'Ringo' before
// adding it to the list
if (!names.contains('Ringo')) {
names.add('Ringo')
}
リストからエントリを削除するには、remove()
メソッドを使用します。
names.remove('Ringo')
これにより、リスト内で最初に出現したアイテムのみが削除され、目的のアイテムが見つかった場合にtrueを示すブール結果が返されます。 したがって、リストで重複が許可されており、それらをすべて削除する必要がある場合は、falseを返すまでremove()
をコールするループを記述する必要があります。
次のようにfor...in
ループを使用して、リスト内のエントリを反復できます:
// Process each name in the list, returning
// false if any restricted name is encountered
for (name in names) {
// call an object function for each name processed
if (isNameRestricted(name)) {
return false
}
}
return true
角括弧表記を使用して、空のリストを定義できます。次のようには何も入力しません:
def foundElements = [] // empty list!