Szukałem metody działającej jak Arrays.equals(a1, a2)
, ale ignorując kolejność elementów. Nie udało mi się go znaleźć ani w kolekcjach Google (coś w stylu Iterables.elementsEqual()
, ale to powoduje zamówienie) i JUnit (assertEquals()
oczywiście po prostu wywołuje equals()
w kolekcji, co zależy od implementacji kolekcji, i to nie jest to, co chcę) Najlepiej byłoby, gdyby taka metoda zajęłaby Iterable
s, ale nie przeszkadza mi również po prostu przyjmowanie Collection
s Taka metoda oczywiście bierze pod uwagę wszystkie duplikaty elementów w kolekcji (więc nie może po prostu przetestować dla containsAll()
).Czy istnieje sposób sprawdzenia, czy dwie kolekcje zawierają te same elementy, niezależnie od kolejności?
Zauważ, że nie pytam, jak zaimplementować takie rzeczy, zastanawiałem się tylko, czy któreś ze standardowych bibliotek kolekcji je ma.
Jeśli nie chcesz używać Apache (lub nie możesz), zawsze możesz: collection1.containsAll (collection2) && collection2.containsAll (collection1) –
@ChrisGonzales, strzeż się tego rozwiązania - zwróci true dla następujące dwie kolekcje: collection1 = [1, bla, 1, 4], collection2 = [1, bla, bla, 4]. Gdzie te dwie kolekcje rzeczywiście nie są takie same. –