Como minúsculas todos os elementos de uma coleção com eficiência?

Qual é a maneira mais eficiente de diminuir minúsculas todos os elementos de uma Lista ou Conjunto?

Minha idéia para uma 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());
}

Existe uma maneira melhor e mais rápida? Como seria este exemplo para um conjunto? Como atualmente não há método para aplicar uma operação a cada elemento de um conjunto (ou lista), isso pode ser feito sem a criação de um conjunto temporário adicional?

Algo assim seria bom:

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

Obrigado,

questionAnswers(11)

yourAnswerToTheQuestion