Java ArrayList - how can I tell if two lists are equal, order not mattering?

iaacp picture iaacp · Nov 21, 2012 · Viewed 232.2k times · Source

I have two ArrayLists of type Answer (self-made class).

I'd like to compare the two lists to see if they contain the same contents, but without order mattering.

Example:

//These should be equal.
ArrayList<String> listA = {"a", "b", "c"}
ArrayList<String> listB = {"b", "c", "a"}

List.equals states that two lists are equal if they contain the same size, contents, and order of elements. I want the same thing, but without order mattering.

Is there a simple way to do this? Or will I need to do a nested for loop, and manually check each index of both lists?

Note: I can't change them from ArrayList to another type of list, they need to remain that.

Answer

user381105 picture user381105 · Nov 21, 2012

Probably the easiest way for any list would be:

listA.containsAll(listB) && listB.containsAll(listA)