I have two lists of arrays.
How do I easily compare equality of these with Java 8 and its features, without using external libraries? I am looking for a "better" (higher-level, shorter, more efficient) solution than brute-force code like this (untested code, may contain typos etc, not the point of the question):
boolean compare(List<String[]> list1, List<String[]> list2)
{
// tests for nulls etc omitted
if(list1.size() != list2.size()) {
return false;
}
for(i=0; i<list1.size(); ++i) {
if(!Arrays.equals(list1.get(i), list2.get(i))) {
return false;
}
}
return true;
}
Or, if there isn't any nicer way, that's a valid answer too.
Bonus: If Java 9 offers an even better way what whaterver Java 8 can offer, feel free to mention it as well.
Edit: After looking at the comments, and seeing how this question has become moderately hot, I think the "better" should include first checking lengths of all arrays, before checking array contents, because that has potential to find inequality much quicker, if inner arrays are long.
> instead of List you would be able to do list1.equals(list2). The actual comparison (under the covers) will still be brute force though.
– marthursson Feb 15 '16 at 11:44