java中列表迭代和比较的难点

java中列表迭代和比较的难点,java,list,Java,List,我有两个listlist existingGuesses包含字符和list word=new ArrayList(words)包含单词,它们是listwords的副本,如下面的代码所示。我试图做的是遍历列表单词的所有单词,并遍历列表现有猜测的字符。然后我想将列表现有猜测的第一个字符与列表单词的所有单词逐一进行比较,如果找到匹配项,我想从列表中删除该单词。然后对下一个字符执行相同的操作,并继续操作,直到没有更多的字可供比较。到目前为止,我只能声明一个迭代器,没有必要使用迭代器,但我不知道其他方法。

我有两个list
list existingGuesses
包含字符和
list word=new ArrayList(words)
包含单词,它们是list
words
的副本,如下面的代码所示。我试图做的是遍历
列表单词的所有单词
,并遍历
列表现有猜测的字符
。然后我想将
列表现有猜测的第一个字符
列表单词
的所有单词逐一进行比较,如果找到匹配项,我想
从列表中删除该单词。然后对下一个字符执行相同的操作,并继续操作,直到没有更多的
字可供比较。到目前为止,我只能声明一个
迭代器
,没有必要使用
迭代器
,但我不知道其他方法。我的代码如下:

 public List<String> getWordOptions(List<String> existingGuesses, String newGuess) 
   {
    List<String> word = new ArrayList<String>(words);
    String c = existingGuesses.get(0); //trying to get the first character
    ListIterator<String> iterator = word.listIterator(); //iterator to iterate thorugh word list
    while(iterator.hasNext())
    {           
      if(word.contains(c)) //trying to compare
      {
       word.remove(c);
      }
    }

    return null;
  }

需要考虑的几点:

   String c = existingGuesses.get(0); //trying to get the first character
获取单词列表中的第一个单词,而不是第一个字符

要获取字符串中的第一个字符,可以执行以下操作:

  char c = newguess.getCharAt(0);
然后,您可以在列表中搜索以该字符开头的单词。接下来,如果不希望删除包含该字符的单词,则希望删除以该字符开头的单词

此外,您希望每次从迭代器中获取一个项目:

   while(iterator.hasNext()){
      String w = iterator.next(); //get the next word in the iterator here
      //process w here
   }
你似乎想知道这些字符是否对应。也就是说,如果猜测是“foo”,那么您希望删除所有以f开头的单词,以及所有具有第二个字符o的单词和所有具有第三个字符o的单词。这似乎有点奇怪,所以您可能需要检查您的逻辑


您的方法似乎引用了一些全局变量,这可能会给您带来一些混乱。

您的方法似乎是正确的。虽然可以对每个
循环使用
,但您需要在循环中创建原始列表的副本,但需要修改原始列表。查看此列表中的所有答案和注释。你搞错了,如果字符匹配,我想删除word,无论是第一个还是最后一个,或者从列表中选择第一个字符现有猜测,并检查复制列表中的所有单词。如果在单词中找到该字符,则该单词将从复制的列表中删除。继续下一个字符,直到:所有字符都已迭代,并且复制的列表中仍有单词。确定。理解。在这种情况下,contains()方法将起作用。
   while(iterator.hasNext()){
      String w = iterator.next(); //get the next word in the iterator here
      //process w here
   }