我有一个名为A和B的字符串列表。我想使用binarySearch集合搜索这两个arraylist之间的常见元素。如何对这两个字符串arraylist使用binarySearch,以便我能够从列表中打印出公共元素。
能够应用此集合来查找像这样的单个元素
int index = Collections.binarySearch(arrayList,"4");
System.out.println("Element found at : " + index);
但我如何将binarySearch集合应用于两个String列表以获取公共元素???
答案 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);
}
}