title: ConcurrentModificationException when using iterator and iterator.remove()
body: <pre><code>    private int checkLevel(String bigWord, Collection&lt;String&gt; dict, MinMax minMax)
  {
      /*value initialised to losing*/
      int value = 0; 
      if (minMax == MinMax.MIN) value = 1; 
      else value = -1; 
  
  
      boolean go = true;
  
      Iterator&lt;String&gt; iter = dict.iterator();
  
      while(iter.hasNext())
      {
          String str = iter.next(); 
          Collection&lt;Integer&gt; inds = naiveStringSearch(bigWord, str);
  
          if(inds.isEmpty())
          {
              iter.remove();
          }
  
          for (Integer i : inds)
          {
              MinMax passin = minMax.MIN;
              if (minMax == MinMax.MIN) passin = minMax.MAX;
  
              int value2 = checkLevel(removeWord(bigWord, str, i), dict, passin); 
              if (value2 == -1 &amp;&amp; minMax == minMax.MIN)
              {
                  value = -1; 
                  go = false;
              }
              if (value2 == 1 &amp;&amp; minMax == minMax.MAX)
              {
                  value = 1; 
                  go = false; 
              }
  
          }
  
          if (go == false) break; 
      }
  
  
      return value;
  }
  </code></pre>
  
  <p>Error: </p>
  
  <pre><code>Exception in thread "main" java.util.ConcurrentModificationException
  at java.util.HashMap$HashIterator.nextEntry(HashMap.java:810)
  at java.util.HashMap$KeyIterator.next(HashMap.java:845)
  at aStringGame.Main.checkLevel(Main.java:67)
  at aStringGame.Main.test(Main.java:117)
  at aStringGame.Main.main(Main.java:137)
  </code></pre>
  
  <p>What's the problem here? </p>