2014-12-04 20 views
1

我有一個String [] allEmps;字符串數組所有的emps;如何獲得String [] A - String [] B即所有在A中但不在B中的元素,在java中?

String [] allEmps = StringUtil.convertCommaStringToArray(listOfEmpsCommaSep, ","); 

我有另一種的String [] EmpsWithCompensationDefined

String [] listOfEmpsWithCompDefined = DBUtility.selectFieldAndReturnAsStringArray(QueryToGetEmpsWhomCompIsDefined, con); 

現在,我想誰補償不即是在A,但不是B.

解決方案的條目定義員工:我可以遍歷這兩個數組並獲得差異。但是這將是O(n^2)複雜。有沒有其他方式的漸近複雜性?

編輯:

ArrayList listOfFilteredEmps = new ArrayList(); 
        for(int j =0;j<allEmps.length;j++){ 
         boolean isMatched = false; 
         for(int i=0;i<listOfEmpsWithCompDefined.length;i++){ 
          if(allEmps[j]==listOfEmpsWithCompDefined[i]){ 
           isMatched = true; 
          } 
         } 
         if(!isMatched){ 
          if(listOfFilteredEmps!=null && listOfFilteredEmps.size()==0){ 
           listOfFilteredEmps.add(allEmps[j]); 
          }else{ 
           listOfFilteredEmps.add(","+allEmps[j]); 
          } 
         } 
        } 
+0

嘗試分享您的代碼你做了什麼! – 2014-12-04 05:33:34

回答

5

您可以用這種方式

String [] allEmps={"A","B","C","D"}; 
String [] listOfEmpsWithCompDefined={"A","D","E"}; 
Set<String> mySet1 = new HashSet<>(Arrays.asList(allEmps)); // convert to set 
Set<String> mySet2 = new HashSet<>(Arrays.asList(listOfEmpsWithCompDefined)); 
mySet1.removeAll(mySet2);// elements which are in A but not in B 
String[] df = mySet1.toArray(new String[mySet1.size()]);// difference 
相關問題