如何找到BOTH数组中的对象并立即将其添加到另一个数组?

时间:2009-10-08 22:48:12

标签: java eclipse

如何创建一个方法,将两个数组作为参数接收并返回一个数组,其中包含两个数组中的项目?

输入(方法中传递的Array1):[“Lisa”,“George”,“Mario”] 输入(方法中传递的Array2):[“Luigi”,“Susan”,“Lisa”]

方法应该返回:[“Lisa”]

我不能使用任何内置方法,所以我必须建立自己的算法,但我在过去的2个小时内陷入困境。我怎样才能在Java中实现这一目标?

编辑:基督在蜡烛棒上。这不是家庭作业。我对算法真的很不满意。特别是那些基本的,尤其是我从未使用过的外语。 :P

4 个答案:

答案 0 :(得分:4)

怎么样:

private static String[] findCommon(final String[] array1,
        final String[] array2) {
    final Set<String> common = new HashSet<String>();
    common.addAll(Arrays.asList(array1));
    common.retainAll(Arrays.asList(array2));
    return common.toArray(new String[0]);
}

答案 1 :(得分:3)

一种快速方法是以下算法:

For each item in list1, add it to a dictionary.
For each item in list2, check if it exists in dictionary, 
if item exists, add it to list3
else continue.
return list3.

答案 2 :(得分:2)

蛮力。

遍历第一个数组。在该循环内,在第二个阵列上有另一个。比较两者中的条目,如果匹配则将它们添加到新数组中。

答案 3 :(得分:1)

    [] result = ...

    foreach( itemA in a ) {
        foreach(  iteamB in b ) {
             if( itemB == itemA ) { // if they are in both places
                   r[] = itemB // append it to the result
             }
         }
    }
    return result;