Java比较无序的ArrayLists

前端之家收集整理的这篇文章主要介绍了Java比较无序的ArrayLists前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
任何人都知道一种有效的方法来决定两个arraylists是否包含相同的值?

码:

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

挑战在于,arraylists没有相同的价值秩序.

(foo,baa) == (foo,baa) // per definition :)

我需要得到这个

(foo,baa) == (baa,foo) // true

那么你的方法是什么?

解决方法

先排序吧.
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);
}

老实说,你应该检查你的数据结构决定.这似乎更像是一个问题.排序然后比较将采用O(nlog n),而HashSet比较将仅为O(n).

猜你在找的Java相关文章