ArrayList内容检查整个数组

时间:2013-10-24 15:48:55

标签: java arrays for-loop return

我正在尝试根据它们包含某个输入字符串来返回一定数量的数组条目。

/**
* This method returns a list of all words from
* the dictionary that include the given substring.
*/
public ArrayList<String> wordsContaining(String text)
{
    ArrayList<String> contentCheck = new ArrayList<String>();
    for(int index = 0; index < words.size(); index++)
    {
        if(words.contains(text))
        {
            contentCheck.add(words.get(index));
        }
    }
    return contentCheck;
}

我不明白为什么这会不断地返回数组中的每个值而不是仅包含字符串位的条目。 谢谢!

2 个答案:

答案 0 :(得分:3)

你的情况:

if(words.contains(text))

检查text是否在列表中。对于全部或没有元素,这将是true

你想要的是:

if(words.get(index).contains(text))

除此之外,如果你使用增强型语句会更好:

for (String word: words) {
    if(word.contains(text)) {
        contentCheck.add(word);
    }
}

答案 1 :(得分:1)

您的代码中有2个问题

第一个是你检查你的情况

if(words.contains(text)) - 检查text是否在列表中

你可能想要的是检查列表的给定项目是否包含text

public List<String> wordsContaining(String text)
{
    List<String> contentCheck = new ArrayList<String>();
    for(String word : words) //For each word in words
    {
        if(word.contains(text)) // Check that word contains text
        {
            contentCheck.add(word);
        }
    }
    return contentCheck;
}