Java compares unordered ArrayLists

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
分享
二维码
< <上一篇
下一篇>>