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

Java 如何找到两个数组中的对象并立即将其添加到另一个数组中?,java,eclipse,Java,Eclipse,如何创建一个方法,接收两个数组作为参数,并返回一个数组,其中填充了两个数组中的项 输入(Array1传入方法):[“Lisa”、“George”、“Mario”] 输入(Array2传入方法):[“Luigi”、“Susan”、“Lisa”] 方法应返回:[“Lisa”] 我不能使用任何内置的方法,所以我必须构建自己的算法,但我在过去的两个小时里一直被卡住。如何在Java中实现这一点 编辑:蜡烛棒上的基督。这不是家庭作业。我只是对算法很不在行。尤其是像这样基础的课程,尤其是我从未使用过的外语P一

如何创建一个方法,接收两个数组作为参数,并返回一个数组,其中填充了两个数组中的项

输入(Array1传入方法):[“Lisa”、“George”、“Mario”] 输入(Array2传入方法):[“Luigi”、“Susan”、“Lisa”]

方法应返回:[“Lisa”]

我不能使用任何内置的方法,所以我必须构建自己的算法,但我在过去的两个小时里一直被卡住。如何在Java中实现这一点


编辑:蜡烛棒上的基督。这不是家庭作业。我只是对算法很不在行。尤其是像这样基础的课程,尤其是我从未使用过的外语P

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

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.
蛮力

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

如何:

    [] 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;
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]);
}
私有静态字符串[]findCommon(最终字符串[]数组1,
最终字符串[]数组2){
final Set common=new HashSet();
common.addAll(Arrays.asList(array1));
common.retainal(Arrays.asList(array2));
返回common.toArray(新字符串[0]);
}

如果您不能使用内置方法,这是一个家庭作业或一个有趣的原因。如果是家庭作业,你能给它贴上这样的标签吗?如果是有趣的东西,你能分享吗?如果不是家庭作业,为什么你不能充分利用这些收藏?在这种情况下,您自己滚动是完全错误的。@Alan,我建议您将“字典”替换为“集”(假设我们不总是谈论单词)。谢谢@Bob,不过这是一个更通用的算法,不涉及任何语言。@Alan:“集”是一个比“字典”更通用的术语。此外,字典是从键到值的映射,您不需要映射。。。只是一个集合。@Alan:“集合”是一个比“字典”更独立于语言的术语。此外,字典是从键到值的映射,您不需要映射。。。只要一套。@Stephen C:一次就够了。你几乎一字不差地重复了同样的事情。“…不能使用任何内置方法…”-这难道不排除使用java.util集合吗?没有发现duffymo。虽然,因为这不是家庭作业,我不明白为什么会存在这种约束;-)@duffymo,我对not作业的建议是查找内置方法的定义,然后实现它。工具箱的实现足以作为一个算法草图;现在OP只需要填补剩下的空白。而不是家庭作业……暴力是O(N*2)。使用集合的解决方案是O(N)或O(NlogN),这取决于您使用的集合实现(以及某些其他假设)。同意,但他说他不能使用内置函数,所以我假设排除使用java.util集合。当然,对于小的例子,他提出的大Oh符号是不相关的。Alan的答案和我的答案几乎一样——两个嵌套循环——并且它被投票支持了三次。