0

我有称为 A 和 B 的字符串列表。我想使用 binarySearch 集合搜索这两个数组列表之间的公共元素。如何对这两个字符串数组列表使用 binarySearch,以便我应该能够打印列表中的公共元素。

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

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

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

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

4

3 回答 3

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]
于 2012-04-19T09:18:03.903 回答
1

您需要使用循环。

System.out.println("Common elements");
for(String s: list1)
    if(Collections.binarySearch(list2, s) >=0)
       System.out.println(s);
于 2012-04-19T09:04:15.160 回答
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);
    }
}
于 2012-04-19T09:05:44.423 回答