Я искал метод, который работает как Arrays.equals(a1, a2)
, но игнорирует порядок элементов. Я не смог найти его в Google Collections (что-то вроде Iterables.elementsEqual()
, но это делает заказ для заказа), а JUnit (assertEquals()
, очевидно, просто вызывает equals()
в коллекции, что зависит от реализации Collection, и это не то, что я хочу) Было бы лучше, если бы такой метод принимал Iterable
с, но я тоже в порядке, просто принимая Collection
s Такой метод, конечно, учитывал бы любые повторяющиеся элементы в коллекции (поэтому он не может просто протестировать для containsAll()
).Есть ли способ проверить, содержат ли две коллекции одни и те же элементы, независимо от порядка?
Обратите внимание, что я не спрашиваю, как реализовать такую вещь, мне просто интересно, есть ли в ней библиотека стандартных коллекций.
В случае, если вы не хотите использовать Apache (или вы не можете), вы всегда можете сделать: collection1.containsAll (collection2) && collection2.containsAll (collection1) –
@ChrisGonzales, остерегайтесь этого решения - оно вернет true для следующие две коллекции: collection1 = [1, blah, 1, 4], collection2 = [1, blah, blah, 4]. Там, где эти две коллекции действительно не совпадают. –