2013-09-24 95 views
0

我有兩個列表word包含單詞(單詞是列表單詞的副本)和existingGuesses包含字符,我想比較它們(表示比較每個字符是否出現在列表中word或不)通過遍歷一個for循環。任何人都可以建議我如何做比較?java中使用for循環的兩個列表的比較

public List<String> getWordOptions(List<String> existingGuesses, String newGuess)    
    { 
    List<String> word = new ArrayList<String>(words); 

/* String c = existingGuesses.get(0); 
    ListIterator<String> iterator = word.listIterator(); 
    while(iterator.hasNext()){ 

    if(word.contains(c)) 
    { 
     word.remove(c); 
    } 
    }*/ 
    for(String temp: word){ 
     for(String cha: existingGuesses){ 

    } 
    } 
    return null; 
} 
+2

我不明白的問題。你可以發佈一些示例輸入和預期輸出嗎? – jlordo

+0

你說existingGuesses包含字符,而在這裏你已經聲明爲包含字符串? – mawia

+0

順便說一句,將'List '命名爲** word **(但看起來像是** words **)是一種不好的做法。如果有一個單字符串列表,則命名爲:字符。 –

回答

1

您可以通過使用List#contains(Object)來檢查此類文字中的猜測。

for(String myGuess: existingGuesses){ 
    if(word.contains(myGuess)) { 
     // Do what you want 
    } 
} 
0

如果你想對它們進行比較,如果它的存在將其刪除,

那麼你可以使用List#removeAll(anotherlist)

從被包含在指定此列表的所有元素中刪除收集(可選操作)。

(從word.remove(c);得到線索)從您的評論代碼。

1

如何以下O(N)的複雜代碼

public List<String> getWordOptions(List<String> existingGuesses, String newGuess) { 
    List<String> word = new ArrayList<String>(words); 
    for (String cha : existingGuesses) { 

     if (word.contains(cha)) { 
      word.remove(cha); 
     } 

    } 
    return null; 
} 
0

您可以使用Collection.retainAll

List<String> word=new ArrayList<String>();//fill list 
List<String> existingGuesses=new ArrayList<String>();//fill list 

List<String> existingWords=new ArrayList<String>(word); 

existingWords.retainAll(existingGuesses); 

//existingWords will only contain the words present in both the lists 
System.out.println(existingWords);