Ce face String.join
String.join(sep, ...) este o metodă statică: o apelezi pe clasă, nu pe un șir. Primește separatorul și elementele, fie ca listă de argumente, fie ca array, fie ca orice colecție de șiruri (List, Set). Separatorul apare doar între elemente, nu și la final.
Un element null apare ca textul "null". Elementele trebuie să fie deja texte; pentru numere, transformă-le întâi sau folosește Collectors.joining pe un stream.
Parametri
| Parametru | Descriere |
|---|---|
separator |
Textul pus între elemente (poate fi gol). |
elemente |
Șirurile de lipit: argumente separate, array sau colecție. |
Ce returnează
Un String nou; șirul gol dacă nu există elemente.
Exemple
Exemplul 1: Lipirea unor nume
import java.util.List;
public class Main {
public static void main(String[] args) {
System.out.println(String.join(", ", "Ana", "Ion", "Maria"));
List<String> orase = List.of("Iași", "Cluj", "Timișoara");
System.out.println(String.join(" -> ", orase));
String[] parti = {"2024", "05", "17"};
System.out.println(String.join("-", parti));
System.out.println("[" + String.join(",", List.of()) + "]");
}
}
Rezultat
Ana, Ion, Maria
Iași -> Cluj -> Timișoara
2024-05-17
[]
Exemplul 2: split și join împreună
Transformăm un rând cu spații într-un rând CSV.
public class Main {
public static void main(String[] args) {
String rand = "Popescu Ana Iași";
String csv = String.join(";", rand.split("\\s+"));
System.out.println(csv);
}
}
Rezultat
Popescu;Ana;Iași
Greșeli frecvente
- Construiești lista cu un separator la final, într-o buclă, și apoi tai ultima virgulă.
String.joinrezolvă direct. - Încerci
String.join(", ", List.of(1, 2, 3)): nu compilează, elementele trebuie să fie texte. Foloseștestream().map(String::valueOf).collect(Collectors.joining(", ")).
Comenzi înrudite
String.split: Împarte șirul în bucăți după un separator (expresie regulată) și returnează un array de String.String.concat: Returnează un șir nou format din șirul curent urmat de str; echivalent cu + pentru două șiruri.StringBuilder.append: Adaugă la sfârșitul textului un șir, un caracter, un număr sau orice obiect și returnează același StringBuilder.String.repeat: Returnează șirul repetat de count ori, lipit; util pentru linii, chenare și alinieri.