2013-08-04 43 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; 
    } 
} 
相關問題