2013-08-04 45 views
0

我想检查两个数组是否至少共享一个用于我的程序的术语。ArrayItem等于另一个阵列中的至少一个条目

我不太确定代码是用来比较两个数组,但这是我迄今为止;

if ((modWikiKeyArray).equals(inputArray[0])) 
{ 
    StringBuilder hyperlinkBuilder = new StringBuilder(); 
    for(int i = 0; i < modWikiKeyArray.length; i++) 
    { 
     hyperlinkBuilder.append(modWikiKeyArray[i]); 
    } 
} 

我如何比较的阵modWikiKeyArray到inputArray只是为了检查,看看是否inputArray [0]等于modWikiKeyArray内任何条款?

+0

您的for循环不起作用。如果在'modWikiKeyArray'中多次出现'inputArray [0]','if'语句中的代码将运行多次。这很可能不是你想要的。而且,即使在'modWikiKeyArray'中发现'inputArray [0]'后,循环将继续寻找更多的事件,这是无效的。 – user2357112

回答

0

你可以做以下

for(int i=0;i<modWikiKeyArray.length;i++) { 
     if(modWikiKeyArray[i].equals(inputArray[0])) { 
      System.out.println("Match found"); 
     } 
    } 

请注意,您需要重写正在创建的任何数组的equals()方法(您正在创建哪个数组的类)。

+0

这适用于我所需要的。谢谢。 – user2647089

+0

你不能重载数组的equals方法(你不需要)。 OMG !! – user2357112

+0

OMG !!数组的equals()方法....你疯了吗?您正在创建的数组的类的equals()方法! –

1

Arrays.asList,您可以用任意阵列构建支持列表,并使用便利Java集合框架的功能,如contains方法:

Arrays.asList(oneArray).contains(elementFromAnotherArray) 

如果你想看到,如果阵列中常见的有至少一个元素,你可以建立一个HashSet出一个环比其他的,试图找到一个共同的元素:

boolean arraysIntersect(Object[] array1, Object[] array2) { 
    Set array1AsSet = HashSet(Arrays.asList(array1)); 
    for (Object o : array2) { 
     if (array1AsSet.contains(o)) { 
      return true; 
     } 
    } 
    return false; 
} 
+0

对于我正在使用的程序,这几乎看起来太复杂了。我还没有学过HashSets,但谢谢你的回答:) – user2647089

+0

@Skippy看起来不像。看到他对我的帖子的评论! –

+0

为了确保上述工作,您还需要为元素类实现hashCode()。 – Neel

0

通过您的代码段去,它看起来像你需要检查inputArray的存在[0]只是,在这种情况下,以下就足够了:

boolean exists = java.util.Arrays.asList(modWikiKeyArray).contains(inputArray[0]); 

或者,你可能也想使用ArrayUtils Apache的公地郎咸平:

boolean exists = ArrayUtils.contains(modWikiKeyArray, inputArray[0]); 

但是,如果我看了你的问题的文字,似乎要找到,如果modWikiKeyArray包含inputArray至少一个项目。为此,您还可以使用Collections API中的retainAll执行列表交集并查看交集列表是否非空。

但是,最原始的仍然是Aniket的方法。但是,我会对其进行修改以减少不必要的操作:

int i = modWikiKeyArray.length - 1; 
MyObject inputElement = inputArray[0]; 
boolean found = false; 
for(; i != 0; i--) { 
    if(modWikiKeyArray[i].equals(inputElement)) { 
     found = true; 
     break; 
    } 
} 
相关问题