DEV Community

FUNDAMENTOS JAVA
FUNDAMENTOS JAVA

Posted on

Cap4 - Mais um novo método em Collection: removeIf

  • Além do forEach, a interface Collection ganhou o método removeIf.

  • O removeIf recebe um Predicate, uma interface funcional usada para testar objetos de um determinado tipo.

  • Remove todos os elementos da coleção para os quais o Predicate retorna true.

Exemplo:

  • Com classe anônima:
    Predicate<Usuario> predicado = new Predicate<Usuario>() {
    public boolean test(Usuario u) {
    return u.getPontos() > 160;
    }
    };
    usuarios.removeIf(predicado);

  • Com expressão lambda (forma mais concisa):
    usuarios.removeIf(u -> u.getPontos() > 160);

  • A coleção deve ser mutável (ArrayList e não Arrays.asList). Caso contrário, ocorre uma UnsupportedOperationException.

Vantagens e Restrições do Uso de Lambdas

Vantagens:

  • Código mais enxuto e legível.

  • Evita a necessidade de criar classes anônimas verbosas.

Restrições:

  • Lambdas não podem ter atributos próprios (não armazenam estado interno).

  • Em alguns casos, o uso de uma classe anônima pode ser necessário.

Outros Métodos Novos em Map

  • Map também recebeu métodos úteis para simplificar código: computeIfPresent, computeIfAbsent, getOrDefault, etc.

  • Esses métodos reduzem a necessidade de escrever código repetitivo para manipular mapas.

Métodos Default e Herança Múltipla

1 Objetivo dos Métodos Default

  • Foram adicionados para permitir a evolução de interfaces sem quebrar código existente.

  • Não foram criados para herança múltipla ou mixins (permite modificar o código em tempo de execução).

2 Restrições dos Métodos Default

  • Não podem acessar atributos de instância, pois interfaces não possuem estado.

  • Não há herança múltipla real no Java 8, apenas compartilhamento de comportamento.

3 Impacto e Trade-offs

  • O uso de métodos default aumenta o acoplamento.

  • As restrições do Java 8 evitam problemas comuns da herança múltipla em outras linguagens.

  • Como todo recurso, há vantagens e desvantagens a serem consideradas.

Top comments (0)