1

リストの2つの値を比較する方法を知りたいと思いました。たとえば、のようなList多くの名前を含む可能性のある名前があります。このリストから、Anaという名前が2回リストされているため、データベースに挿入するのは1回だけにする必要があります。そうしないと、エラーが返されます。独自の制約がこれを解決できることは知っていますが、私が取り組んでいる現在のgrailsプロジェクトの要件ではありません。では、一意の制約を使用せずにデータベースに挿入する前に、リストの値をどのように比較しますか?values(Ana, Ben, Maria, Ana)

助けてください!ありがとう!

4

2 に答える 2

1

Groovyのメソッドを避けたいという意味ではないと仮定するとunique、次のことができます。

List names = [ 'Ana', 'Ben', 'Maria', 'Ana' ]

assert names.unique(false) != names

namesこれにより、 ( )から新しいリストが作成[ 'Ana', 'Ben', 'Maria' ]され、元のリストと同じではないと断言されます。

メソッドに渡さfalseれるとunique、新しいリストが作成されます。合格trueすると、元のリストが変更されます...

于 2012-08-01T10:18:54.383 に答える
0

リストの代わりに、要素の繰り返しを許可しないセットを使用できます。名前変数をセットとして宣言すると、繰り返される要素を追加できなくなります。変数を見るたびに、それが自然にユニークな要素で満たされていることを確認できます。

また、リストをセットに変換する場合は、次のようにすることができます。

def uniqueNames = names as Set
于 2012-08-01T15:58:23.097 に答える