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 predicado = new Predicate() { 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. 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.

Feb 25, 2025 - 01:10
 0
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 predicado = new Predicate() {
    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.

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.