title: Collection removeAll ignoring case?
body: <p>Ok so here is my issue. I have to <code>HashSet</code>'s, I use the <code>removeAll</code> method to delete values that exist in one set from the other. </p>
  
  <p>Prior to calling the method, I obviously add the values to the <code>Set</code>s. I call <code>.toUpperCase()</code> on each <code>String</code> before adding because the values are of different cases in both lists. There is no rhyme or reason to the case.</p>
  
  <p>Once I call <code>removeAll</code>, I need to have the original cases back for the values that are left in the <code>Set</code>. Is there an efficient way of doing this without running through the original list and using <code>CompareToIgnoreCase</code>?</p>
  
  <p>Example:</p>
  
  <p>List1:</p>
  
  <pre><code>"BOB"
  "Joe"
  "john"
  "MARK"
  "dave"
  "Bill"
  </code></pre>
  
  <p>List2:</p>
  
  <pre><code>"JOE"
  "MARK"
  "DAVE"
  </code></pre>
  
  <p>After this, create a separate <code>HashSet</code> for each List using <code>toUpperCase()</code> on <code>String</code>s. Then call <code>removeAll</code>.</p>
  
  <pre><code>Set1.removeAll(set2);
  
  Set1:
      "BOB"
      "JOHN"
      "BILL"
  </code></pre>
  
  <p>I need to get the list to look like this again:</p>
  
  <pre><code>"BOB"
  "john"
  "Bill"
  </code></pre>
  
  <p>Any ideas would be much appreciated. I know it is poor, there should be a standard for the original list but that is not for me to decide.</p>