Se a declaração usando == fornece resultado inesperado [duplicado]

Esta pergunta já tem uma resposta aqui:

Como comparo as strings em Java? 3 respostas
private void refineWords() {
    for(String word : words){
        Log.i("word", word);
        if (word == "s" || word == "t" || word == "am" || word == "is" || word == "are" || word == "was" || word == "were" || word == "has" || 
            word == "have" || word == "been" || word == "will" || word == "be" || word == "would" || word == "should" || word == "shall" || 
            word == "must" || word == "can" || word == "could" || word == "the" || word == "as" || word == "it" || word == "they" ||
            word == "their" || word == "he" || word == "she" || word == "his" || word == "her" || word == "him" || word == "its" ||
            word == "in" || word == "on" || word == "a" || word == "at") {

            Log.i("step", "step Success!!");
            words.remove(word);
        }
    }
}

Eu tenho uma lista chamada "words" e ela contém strings. Aqui o Log.i funciona bem para a marca "word", mas a instrução "step" não é executada. Parece que a condição If não funciona bem. como esse método nunca entra nele, embora a lista "palavras" contenha cadeias semelhantes. Qual seria o problema. pedidos de ajuda ..

questionAnswers(8)

yourAnswerToTheQuestion