如何创建一个方法,将两个数组作为参数接收并返回一个数组,其中包含两个数组中的项目?
输入(方法中传递的Array1):[“Lisa”,“George”,“Mario”] 输入(方法中传递的Array2):[“Luigi”,“Susan”,“Lisa”]
方法应该返回:[“Lisa”]
我不能使用任何内置方法,所以我必须建立自己的算法,但我在过去的2个小时内陷入困境。我怎样才能在Java中实现这一目标?
编辑:基督在蜡烛棒上。这不是家庭作业。我对算法真的很不满意。特别是那些基本的,尤其是我从未使用过的外语。 :P
答案 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;