Java compares unordered ArrayLists
•
Java
Does anyone know an effective way to determine whether two ArrayLists contain the same value?
Code:
ArrayList<String> dummy1= new ArrayList<String>(); list1.put("foo"); list1.put("baa"); ArrayList<String> dummy2= new ArrayList<String>(); list1.put("baa"); list1.put("foo"); dummy1 == dummy2
The challenge is that ArrayLists do not have the same value order
(foo,baa) == (foo,baa) // per deFinition :)
I need this
(foo,baa) == (baa,foo) // true
So what's your method?
Solution
Sort it first
public boolean equalLists(List<String> one,List<String> two){ if (one == null && two == null){ return true; } if((one == null && two != null) || one != null && two == null || one.size() != two.size()){ return false; } //to avoid messing the order of the lists we will use a copy //as noted in comments by A. R. S. one = new ArrayList<String>(one); two = new ArrayList<String>(two); Collections.sort(one); Collections.sort(two); return one.equals(two); }
To be honest, you should check your data structure decisions This seems more like a problem Sorting and then comparison will take o (NLog n), while HashSet comparison will only take o (n)
The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
二维码