anybody know an efficient way to decide if two arraylists contain the same values?
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 the arraylists has not the same value order..
(foo, baa) == (foo, baa) // per definition :)
i need to get this
(foo, baa) == (baa, foo) // true
so what would be your approach?
Just 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);
}
Honestly, you should check your data structure decision.  This seems more like a set problem.  Sorting then comparing will take O(nlog n) while a HashSet comparison will only be O(n).  
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With