¿Cómo minúsculas cada elemento de una colección de manera eficiente?

¿Cuál es la forma más eficiente de minúsculas cada elemento de una lista o conjunto?

Mi idea para una lista:

final List<String> strings = new ArrayList<String>();
strings.add("HELLO");
strings.add("WORLD");

for(int i=0,l=strings.size();i<l;++i)
{
  strings.add(strings.remove(0).toLowerCase());
}

¿Hay una manera mejor y más rápida? ¿Cómo se vería este ejemplo para un Set? Como actualmente no existe un método para aplicar una operación a cada elemento de un Conjunto (o Lista), ¿puede hacerse sin crear un Conjunto temporal adicional?

Algo como esto sería bueno:

Set<String> strings = new HashSet<String>();
strings.apply(
  function (element)
  { this.replace(element, element.toLowerCase();) } 
);

Gracias,

Respuestas a la pregunta(11)

Su respuesta a la pregunta