Resolvido: String joiner em streams

Última atualização: 09/11/2023

Em Java, trabalhar com streams e strings é uma parte essencial do trabalho diário do desenvolvedor. A funcionalidade da classe StringJoiner neste contexto não pode ser subestimada. Introduzido no Java 8, StringJoiner é uma classe utilitária que constrói uma sequência de caracteres separados por um delimitador e opcionalmente delimitados por um prefixo e sufixo. Isso ajuda na realização de tarefas como unir um fluxo de strings ou tokens por um delimitador, especialmente ao trabalhar com a API Streams.

Este utilitário, desenvolvido no pacote java.util, ostenta simplicidade, eficiência e flexibilidade, tornando-o uma ferramenta crucial para desenvolvedores. A classe StringJoiner elimina o complicado processo de manipulação manual de delimitadores, reduzindo significativamente as chances de erros.

A Declaração do Problema

Muitas vezes, ao lidar com fluxos em Java, todo desenvolvedor enfrenta o desafio de unir strings ou outros objetos, que são resultados de algumas operações, em uma única string com um delimitador específico. Os métodos convencionais envolveriam a escrita de loops adicionais e o tratamento de exceções para conseguir isso, o que torna o código mais complexo e menos legível.

Solução: a classe StringJoiner

A classe StringJoiner fornece uma solução adequada para esse problema. Pode ser usado para concatenar o fluxo de strings de uma maneira mais eficiente e compreensível. Envolve a criação de uma instância da classe java.util.StringJoiner e a adição de strings a ela usando o método `add()`.

StringJoiner joiner = new StringJoiner(", ");
joiner.add("one");
joiner.add("two");
String joined = joiner.toString(); 

Os métodos associados ao StringJoiner nos permitem fornecer prefixo e sufixo e aplicar condições como manipulação de listas vazias e definição de texto padrão para listas vazias.

Explicação passo a passo do código

O uso da classe StringJoiner é simples. Veja como ele pode ser usado:

1. Crie uma instância `StringJoiner` especificando o delimitador dentro do construtor. Este é o caractere usado entre as strings que serão unidas.

StringJoiner joiner = new StringJoiner(", ");

2. Você adiciona strings ou outros objetos (que implementam o método toString()) à instância `StringJoiner` usando o método add(…):

joiner.add("one");
joiner.add("two");

3. Finalmente, para obter a string unida, você chama o método toString() na instância StringJoiner.

String joined = joiner.toString(); 

A variável unida agora contém o valor “um, dois”.

Funções e bibliotecas adicionais em Java relacionadas à junção de strings

Java 8 também introduziu outro método para unir strings: String.join(). Além disso, também vale a pena destacar o método Collectors.joining() da biblioteca java.util.stream.Collectors. Este método nos permite juntar streams com delimitadores, o que significa que você pode juntar strings e outros objetos diretamente de um stream.

Java nos forneceu soluções eficientes e simplificadas para concatenar strings ou objetos com delimitadores na forma de StringJoiner, String.join() e Collectors.joining(). Aproveite para explorar essas funções em suas futuras práticas de desenvolvimento!

Artigos relacionados: