2012-04-19 9 views
0

私はAとBというString Listを持っています。私はbinarySearchコレクションを使ってこれらの2人のarraylistの共通要素を検索したいと思います。これらの2つの文字列arraylistのために私はリストから共通の要素を印刷することができるはずですが、binarySearchを使用する方法。2つのString ararylistのbinarySearchコレクションを適用する方法

この

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

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

のような単一の要素を見つけるために、このコレクションを適用することができていますが、どのように私は、共通の要素を取得するために、2つの文字列のリストに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

+0

'get(int index)'メソッドを使用してください。 – mcfinnigan

+0

@ user1193904:気付いた場合、私のprintステートメントは、重複した項目も場所と一緒に印刷します。 – npinti

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

+0

私はこれを試しました..しかし、このような空白の出力を与えます。[] – user1193904

+0

結果セットを反復処理し、 'a.add(rs.get(..))'を使用することができます。あなたの結果セットはどのくらいですか?このクライアント側を行う必要がありますか? SQLの「INTERSECT」は、ここでより良い選択肢かもしれません:http://en.wikipedia.org/wiki/Set_operations_(SQL)#INTERSECT_operator – Matt

関連する問題