Почему в Groovy, когда я создаю 2 списка, есть ли разница, если я делаю A. INTERSECT (B) и B. Отслеживать (A):
def list1 = ["hello", "world", "world"];
def list2 = ["world", "world", "world"];
println( "Intersect list1 with list2: " + list1.intersect( list2 ) );
println( "Intersect list2 with list1: " + list2.intersect( list1) );
следы:
Intersect list1 with list2: [world, world, world]
Intersect list2 with list1: [world, world]
(вы Можно скопировать здесь: http://grovyconsole.appspot.com/ Если вы хотите проверить его)
, если массивы все содержат уникальные элементы, то он работает как обычно. Как только вы начнете добавлять Дубликаты, это становится странным:
def list1 = ["hello", "world", "test", "test"];
def list2 = ["world", "world", "world", "test"];
println( "Intersect list1 with list2: " + list1.intersect( list2 ) );
println( "Intersect list2 with list1: " + list2.intersect( list1 ) );
следы:
Intersect list1 with list2: [world, world, world, test]
Intersect list2 with list1: [world, test, test]
Я думал, что весь смысл пересекается ()
должен был дать вам общие элементы, так что это не имеет значения, в каком порядке их показать?
Если это не так, как я могу получить только общие элементы (ожидайте дубликатов в массиве). Например, пример нужно вернуть [«Мир», «мир»]
и пример два Должен вернуться [«World», «Test»]
Редактировать
, чтобы немного уточнить, этот код должен проверить, что данные пользователя все еще одинаковы (предполагая, что они отключены в середине чего-либо, и мы хотим Убедитесь, что данные не были подделаны, или находится в том же состоянии, что и раньше).
Порядок списков не может быть гарантирован (пользователь может перенаправить его, но это все еще технически «так же»), и возможны дубликаты.
Так что-то вроде: [«один», «один», «два»]
должен совпадать [«два», «один», «один»]
, тогда как любой Дополнение к спискам или изменение данных не должно совпадать.