2012-02-16 89 views
0

您好存儲數組列表中的結果通過查詢java中的不同數據庫獲得。我需要比較這個數組列表以獲得公共行arraylist比較

 List name = new ArrayList(); 
     name.add(Spreadsheets.getString("Name")); 

    List namedb = new ArrayList(); 
    namedb .add(rs.getString("eName")) 

在C++中我們使用strcmp進行比較。但在Java中,我如何比較這個ArrayList,它應該返回普通的行。或者我如何應用二進制搜索算法來搜索這些數組列表?

+0

我會建議由Triztian在下面顯示的namesDB.retainAll(names)方法,但是根據數組的大小注釋,效率可能很差。如果名稱是唯一的,我會使用Set 而不是ArrayList 。 – brettw 2012-02-16 06:58:06

回答

1

使用列表的retainAll方法。

List<String> names = new ArrayList<String>(); 
List<String> namesDB = new ArrayList<String>(); 

// Get some names ?? 
names.add(Spreadsheets.getString("Name")); 

boolean hasCommonNames = namesDB.retainAll(names); 

// The namesDB will only contain the common names. 
if(hasCommonNames) { 
    // Do something with the common names 
} 
0

您可以使用HashMap來存儲第一組結果,然後通過第二個列表循環,重複檢查時,如果在HashMap中存在價值,如果它存在,將其推到另一個目錄C,在迭代結束時,列表C將具有相同的元素

0
ArrayList<Integer> a3 = new ArrayList<Integer>();    
for (String a : a1) 
    a3.add(a2.contains(a) ? 1 : 0); 

現在檢查a3的內容。如果全部爲1,則兩個列表相同...

+0

我需要字符串結果 – user1063145 2012-02-16 04:44:24

+0

更好,如果你在例子中提供輸入和輸出然後... – 2012-02-16 04:46:00