2012-12-04 60 views
3

我正在開發一個java項目,並需要在兩個數組之間打印通用值。打印兩個數組的常見值

我已經按照它們的排序順序打印了兩個數組,並且它們都很好看(包含它們應該包含的所有值)。但是,當我遵循最簡單的算法(見下文)時,即使我可以手動查看兩個陣列中的打印輸出,而沒有比較,在執行以下操作後應該打印更多的值,但我沒有找到所有常見值:

 for(int i=0; i<fibList.size(); i++) 
     { 
      for(int j=0; j<primeList.size(); j++) 
      { 
       if(fibList.get(i) == primeList.get(j)) 
       { 
        System.out.print(" " + fibList.get(i)); 
        break; 
       } 
      } 
     } 

請讓我知道您的想法。希望這只是一個簡單的錯誤。

+0

你有沒有在你的名單是什麼?整數對象或什麼? – bellum

+0

正在做作業嗎?另外,如果列表是由字符串組成的,你可能想嘗試.equals()而不是== – jlarson

+1

是它們的對象數組嗎?如果是這樣==不會工作,請使用fibList.get(i).equals(primeList.get(j)) – turbo

回答

4

最有可能想:

變化:

if(fibList.get(i) == primeList.get(j)) 

要:

if(fibList.get(i).equals(primeList.get(j))) 
+0

正是我需要的!謝謝! – ZAX

+0

@ sampson-chen +1是的,你是對的。很好的接收。 –

4

if(fibList.get(i).equals(primeList.get(j)))可以使用。

4
List<Integer> result = new ArrayList<Integer>(fibList); 
result.retainAll(primeList); 
for (Integer i : result) { 
    System.out.println(i); 
} 
+0

真棒馬恩,謝謝你讓我知道關於retainAll()。 +1 – PermGenError