如何为两个String arraylist应用二进制搜索集合

时间:2012-04-19 09:02:02

标签: java

我有一个名为A和B的字符串列表。我想使用binarySearch集合搜索这两个arraylist之间的常见元素。如何对这两个字符串arraylist使用binarySearch,以便我能够从列表中打印出公共元素。

能够应用此集合来查找像这样的单个元素

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

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

但我如何将binarySearch集合应用于两个String列表以获取公共元素???

3 个答案:

答案 0 :(得分:1)

您需要使用循环。

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

答案 1 :(得分: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]

答案 2 :(得分: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);
    }
}