我有两个字符串列表,每个列表中包含大约100个字符串项,其中一些是常见的。
我想获取两个列表共有的项目并将其存储在另一个列表中。
如何做到这一点。请帮忙。
答案 0 :(得分:1)
您可以使用List
的retainAll方法import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class MainClass {
public static void main(String args[]) {
String orig[] = { "a", "b", "b", "c" };
String act[] = { "x", "b", "b", "y" };
List origList = new ArrayList(Arrays.asList(orig));
List actList = Arrays.asList(act);
origList.retainAll(actList);
System.out.println(origList);
}
}
这将打印[b,b]
答案 1 :(得分:1)
listA.retainAll(listB);
答案 2 :(得分:1)
你想要什么叫做集合交集。 (或多集,如果你想看到几个副本。)
简单而有效的解决方案是对两个数组进行排序并迭代它们。
for(int i = 0; i < a.length(); )
{
for(int j = 0; j < b.length(); )
{
int comparison = a[i].compareTo(b[j]);
if(comparison == 0)
{
// Add a[i] or b[j] to result here.
// If you don't want duplicate items
// in result, compare a[i] to
// last item in result and add
// only if a[i] is strictly greater.
++i;
++j;
}
else if(comparison < 0)
++i;
else
++j
}
}
如果你的字符串足够长,你应该从第一个列表中添加HashSet
字符串,并迭代第二个数组,检查元素是否已经设置。