为了账号安全,请及时绑定邮箱和手机立即绑定

如何检查 String[] 是否包含我的元素?

如何检查 String[] 是否包含我的元素?

森栏 2022-06-04 17:02:52
我被要求编写一个代码,将元素添加到具有一些条件的数组中。我搜索了整个 StackOverflow 以了解如何在数组中查找元素,但都给了我错误,所以我猜我的代码有问题,我不知道是什么。任何帮助表示赞赏。public class WordList{    String [] words;    int count = 0;    int max = 2;    WordList()    {        words = new String[max];        this.words = words;        this.count = count;    }    public static void main (String[] args)    {        WordList w1 = new WordList();        System.out.println(w1.addWord("Dog"));        System.out.println(w1.addWord("Cat"));        System.out.println(w1.addWord("Fish"));    }    public int addWord(String newWord)    {        for(int i = 0; i < words.length; i++)        {            if(words.contains(newWord) == false && words.length < max)            {                words[i] = newWord;            }            else if(words.contains(newWord) == false && words.length == max)            {                max *= 2;                words[i] = newWord;            }            count = i + 1;        }        return count;    }
查看完整描述

3 回答

?
江户川乱折腾

TA贡献1851条经验 获得超5个赞

我认为您可以使用Set而不是数组。


public class WordList {


    private final Set<String> words = new HashSet<>();


    public int addWord(String word) {

        if (word != null)

            words.add(word);

        return words.size();

    }


    public static void main(String[] args) {

        WordList w1 = new WordList();

        System.out.println(w1.addWord("Dog"));

        System.out.println(w1.addWord("Cat"));

        System.out.println(w1.addWord("Fish"));

    }

}


查看完整回答
反对 回复 2022-06-04
?
繁星淼淼

TA贡献1775条经验 获得超11个赞

我认为这就是你想要做的。常规数组没有indexOforcontains方法,所以你需要使用Arrays(确保你也导入它)


public int addWord(String newWord)

{

  List <String> myList = Arrays.asList(words);


    for(int i = 0; i < words.length; i++)

    {

        if(myList.indexOf(newWord) == -1 && words.length < max)

        {

            words[i] = newWord;

        }

        else if(myList.indexOf(newWord) == -1 && words.length == max)

        {

            max *= 2;

            words[i] = newWord;

        }


        count = i + 1;

    }

    return count;

}


查看完整回答
反对 回复 2022-06-04
?
MMTTMM

TA贡献1869条经验 获得超4个赞

无论如何,您都需要编写自己的方法来找到它。它不受内存限制 - 您可以将数组转换为 List 并使用 .contains() 方法。

Arrays.asList(words).contains(newWord);

否则,您可以使用流来查找元素。

Arrays.stream(words).anyMatch(newWord::equals);


查看完整回答
反对 回复 2022-06-04
  • 3 回答
  • 0 关注
  • 259 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信