Dúvida Lambda

Galera boa tarde, me desculpe sou inciante o assunto, estou fazendo um curso on line e criei a seguinte arryalist

ArrayList empresas = new ArrayList();
// List empresas = Arrays.asList(“Matera Systems”, “IBM”,
// “CI&T”, “Google”, “Capigemini”);

	empresas.add("Matera Systems");
	empresas.add("IBM");
	empresas.add("CI&T");
	empresas.add("Google");
	empresas.add("Capigemmini");

Criei a seguinte funçao onde quero colocar as Strings por ordem de tamanho

empresas.sort((obj1,obj2)->{ Integer.compare(obj1.length(), obj2.length()); });

porem me retorna um erro no método sort
The method sort(Comparator<? super String>) in the type ArrayList is not applicable for the arguments (( obj1, obj2) -> {})

segundo o que aprendi nao preciso informar o tipo de dado de meus obj1, obj2
alguem poderia me ajudar

grato

Na verdade é Lambda e não Lambida.

Tira o "{", o ";" e o "}", dessa forma:

empresas.sort((obj1, obj2) -> Integer.compare(obj1.length(), obj2.length()));

Se quiser deixar mais simples:

empresas.sort((obj1, obj2) -> obj1.length() - obj2.length());

Ou mais simples ainda:

empresas.sort((obj1, obj2) -> obj1.compareTo(obj2));

Como diz no erro o tipo é incompatível. Sua lista contem Strings mas você esta usando uma lista sem parametro de tipo, então ele assume que seus Strings são na verdade Objects.

Mude a declaração e inicialização para:

ArrayList<String> empresas = new ArrayList<>();

isso mesmo lambda rs , funcionou perfeitamente!

Obrigado Staroski