2012-04-19 53 views
0

我有名爲A和B的字符串列表我想使用binarySearch集合搜索這兩個arraylist之間的公共元素。如何對這兩個字符串arraylist使用binarySearch,以便我能夠從列表中打印通用元素。如何將binarySearch集合應用於兩個字符串ararylist

我能申請這個集合來找到這樣一個元素

int index = Collections.binarySearch(arrayList,"4"); 

System.out.println("Element found at : " + index); 

,但我該如何申請的binarySearch收集兩個字符串列表,以獲得共同的要素???

回答

1

您需要使用循環。

System.out.println("Common elements"); 
for(String s: list1) 
    if(Collections.binarySearch(list2, s) >=0) 
     System.out.println(s); 
0

像這樣的東西應該工作:

List<String> a = new ArrayList<String>(); 


List<String> b = new ArrayList<String>(); 
Collections.sort(b); 

for (String str : a) 
{ 
    index = Collections.binarySearch(b, str); 
    if (index > 0) 
    { 
     System.out.println("Duplicate Item " + str + " found at index " + index); 
    } 
} 
+0

我需要打印重複值...不僅其索引...如何做到這一點? – user1193904 2012-04-19 09:09:10

+0

通過使用'get(int index)'方法。 – mcfinnigan 2012-04-19 09:11:37

+0

@ user1193904:如果您注意到,我的打印語句也會打印重複的項目以及位置。 – npinti 2012-04-19 09:12:11

1

除非有使用binarySearch特定的要求,我建議你使用java.util.Set對於此類操作:

import java.util.Arrays; 
import java.util.HashSet; 
import java.util.Set; 

public class SetTest { 

    public static void main(String[] args) { 
     Set<String> a = new HashSet<String>(Arrays.asList("a", "b", "c")); 
     Set<String> b = new HashSet<String>(Arrays.asList("b", "c", "d")); 
     a.retainAll(b); 
     System.out.println(a); 
    } 
} 

輸出:

[b, c] 
+0

Arrays.asList(「a」,「b」,「c」)這是個人元素...我需要存儲結果集值通過查詢獲得數據庫。我如何存儲到哈希集? – user1193904 2012-04-19 09:33:49

+0

我試過這個..但是它給了我這樣的空白輸出[] – user1193904 2012-04-19 09:39:09

+0

你可以迭代結果集並使用'a.add(rs.get(..))'。你的結果集有多大?你確定你需要做這個客戶端嗎? SQL的'INTERSECT'可能是更好的選擇:http://en.wikipedia.org/wiki/Set_operations_(SQL)#INTERSECT_operator – Matt 2012-04-19 09:50:49

相關問題