Pular para o conteúdo
Início » Java 21: Aprenda a Utilizar as Sequenced Collections

Java 21: Aprenda a Utilizar as Sequenced Collections

O Java 21 introduziu uma nova funcionalidade no Framework de Coleções: Sequenced Collections. Neste post, vamos explorar os detalhes dessa funcionalidade e fornecer exemplos de uso.

Objetivo das Sequenced Collections

Antes do Java 21, não havia uma maneira unificada de tratar coleções com uma sequência definida de elementos. Coleções como List e Deque tinham uma ordem, mas o seu ancestral Collection não, o que leva a inconsistências e falta de métodos comuns.

SequencedCollections, SequencedSet e SequencedMap

Com o JDK 21, três novas interfaces foram introduzidas, oferecendo uma abordagem padrão para resolver este problema:

  • SequencedCollection
  • SequencedSet
  • SequencedMap

Essas interfaces agora garantem que cada coleção tenha um primeiro, segundo e último elemento e suportem operações uniformes para acessar e processar esses elementos​.

Exemplo com SequencedCollection

A interface SequencedCollection facilita a adição, recuperação e remoção de elementos nas extremidades da coleção, além de oferecer o método reversed() para visualizar a coleção em ordem inversa.

    public static void main(String[] args) {
        List<Integer> lista = new ArrayList<>();
        lista.add(10);
        lista.add(5);
        lista.add(30);
        System.out.println(lista.getFirst()); // Saída: 10
        System.out.println(lista.getLast()); // Saída: 5
        System.out.println(lista.reversed()); //Saída [30, 5, 10]
    }

Este exemplo mostra a simplicidade de acessar os elementos nas extremidades da lista e a reversão da coleção.

Exemplo com SequencedSet

A interface SequencedSet é específica para implementações de Set, como LinkedHashSet, e personaliza o método reversed() para devolver um SequencedSet.

  public static void main(String[] args) {
        SequencedSet<Integer> hashSet = new LinkedHashSet<>(List.of(5, 8, 12, 9, 10));
        System.out.println("Primeiro elemento: " + hashSet.getFirst()); // Saída: 5
        System.out.println("Último elemento: " + hashSet.getLast());    // Saída: 10
        System.out.println("Visão reversa: " + hashSet.reversed());     // Saída: [10, 9, 12, 8, 5]
    }

Aqui, o LinkedHashSet mantém a ordem de inserção dos elementos e permite manipulá-los de maneira intuitiva com as novas operações sequenciais.

Exemplo com SequencedMap

Um SequencedMap pode ser exemplificado pelo uso de um LinkedHashMap. Vamos ver como isso pode ser aplicado:

    public static void main(String[] args) {
        SequencedMap<Integer, String> sequencedMap = new LinkedHashMap<>();
        sequencedMap.put(1, "Um");
        sequencedMap.put(2, "Dois");
        sequencedMap.put(3, "Tres");

        // Saída: SequencedMap: {1=Um, 2=Dois, 3=Três}
        System.out.println("SequencedMap: " + sequencedMap);

        // Saída: 1=Um
        System.out.println(sequencedMap.firstEntry());

        // Saída: 3=Três
        System.out.println(sequencedMap.lastEntry());

        SequencedMap<Integer, String> reversedMap = sequencedMap.reversed();
        // Saída: {3=Tres, 2=Dois, 1=Um}
        System.out.println("Visão Reversa: " + reversedMap);
    }

Este mapa mantém a ordem de inserção e nos permite acessar os elementos de forma sequencial, incluindo a opção de visualizar o mapa em ordem inversa.

É possível utilizar ainda os métodos, pollFirstEntry() e pollLastEntry().

  • pollFirstEntry(): Remove e retorna o primeiro item do map, Se o mapa estiver vazio, retorna null.
  • pollLastEntry(): Remove e retorna o último elemento do mapa. Assim como pollFirstEntry(), retorna null se o mapa estiver vazio.

Conclusão

As SequencedCollections no Java 21 simplificam a interação com coleções ordenadas, estabelecendo uma uniformidade antes inexistente. Estes exemplos ilustram como as novas interfaces podem melhorar significativamente a clareza e a eficiência do código Java. Explore mais e aprofunde-se na documentação oficial para maximizar o uso dessas novas funcionalidades.

Neste blog você também encontrar também duas novas features do Java 21: Virtual Threads e Record Patterns e Pattern Matching

Agora que exploramos as novas Coleções Sequenciais do Java 21, queremos saber a sua opinião! 🤔✨ Comente abaixo o que você achou dessas atualizações. Elas serão úteis para seus projetos? Alguma dúvida ou insight que queira compartilhar? Sua participação é muito importante para nós! 💬👍

Marcações:

1 comentário em “Java 21: Aprenda a Utilizar as Sequenced Collections”

  1. Pingback: Java 21: Codifique com Emoção Usando o Novo Suporte a Emojis - A Arte de Programar

Deixe um comentário