Table of Contents
Trong bài này chúng ta cùng xem một số cách cộng chuỗi (string concat/ joiner) trong Java và tính năng mới StringJoiner trong Java 8.
1. Sử dụng StringBuilder/ StringBuffer
Trước Java 8, để có thể ghép các chuỗi với một dấu phân cách, thường chúng ta phải lặp qua các phần tử của một mảng hoặc danh sách và sử dụng StringBuilder/ StringBuffer để lưu giữ.
Ví dụ:
final String DELIMITER = ", "; String[] arr = { "one", "two", "three" }; int numOfElements = arr.length; StringBuilder sb = new StringBuilder(); for (int i = 0; i < numOfElements; i++) { sb.append(arr[i]); if (i < numOfElements - 1) { sb.append(DELIMITER); } } System.out.println(sb.toString()); // one, two, three [/code] <!-- /wp:shortcode --> <!-- wp:heading --> <h2>2. Sử dụng StringJoiner trong Java 8</h2> <!-- /wp:heading --> <!-- wp:paragraph --> <p>Java 8 đã thêm một lớp final <strong>StringJoiner</strong> trong gói <strong>java.util</strong>. Nó được sử dụng để xây dựng một chuỗi ký tự được phân tách bằng dấu phân cách như dấu phẩy (,), dấu nối (-), …. Bạn cũng có thể chuyển tiền tố (prefix) và hậu tố (suffix) vào chuỗi.</p> <!-- /wp:paragraph --> <!-- wp:heading {"level":3} --> <h3>2.1. Ví dụ StringJoiner với dấu phân tách (delimiter)</h3> <!-- /wp:heading --> <!-- wp:shortcode --> StringJoiner stringJoiner = new StringJoiner(", "); stringJoiner.add("one"); stringJoiner.add("two"); stringJoiner.add("three"); System.out.println(stringJoiner.toString()); // one, two, three
2.2. Ví dụ StringJoiner với tiền tố (prefix) và hậu tố (suffix)
StringJoiner stringJoinerWithPrefixSufix = new StringJoiner(",", "{", "}"); stringJoinerWithPrefixSufix.add("1"); stringJoinerWithPrefixSufix.add("2"); stringJoinerWithPrefixSufix.add("3"); System.out.println(stringJoinerWithPrefixSufix.toString()); // {1,2,3}
2.3. Sử dụng phương thức static java.lang.String.join()
String strWithJoiner = String.join(", ", "one", "two", "three"); System.out.println(strWithJoiner); // one, two, three List<String> list= Arrays.asList("one", "two", "three"); strWithJoiner = String.join(", ", list); // one, two, three
2.4. Sử dụng java.util.stream.Collectors.joining()
// joining with delimiter List<String> list = Arrays.asList("one", "two", "three"); String collectorJoiningWithDelimiter = list.stream() .map(element -> element) .collect(Collectors.joining(", ")); System.out.println(collectorJoiningWithDelimiter); // one, two, three // joining with prefix & suffix String collectorJoiningWithPrefixSuffix = list.stream() .map(element -> element) .collect(Collectors.joining(", ", "{", "}")); System.out.println(collectorJoiningWithPrefixSuffix); // {one, two, three}
3. Sử dụng thư viện Commons Lang
Nếu project của bạn không sử dụng phiên bản Java 8, các bạn cũng có thể sử dụng thư viện common-lang để thay thế. Thư viện này bao gồm rất nhiều phương thức tiện ích hỗ trợ giải quyết những thao tác với String, Number, ….
Thư viện common lang các bạn có thể download tại đây: https://mvnrepository.com/artifact/org.apache.commons/commons-lang3
String[] arr = { "one", "two", "three" }; String joinedString = StringUtils.join(arr, ", "); // one, two, three List<String> list = Arrays.asList("one", "two", "three"); joinedString = StringUtils.join(list, ", "); // one, two, three
Related posts:
Lớp LinkedHashMap trong Java
Convert char to String in Java
Abstract class và Interface trong Java
Generating Random Numbers in a Range in Java
Java Program to Implement Sieve Of Sundaram
Servlet 3 Async Support with Spring MVC and Spring Security
Tính kế thừa (Inheritance) trong java
Daemon Threads in Java
Java Program to Repeatedly Search the Same Text (such as Bible by building a Data Structure)
Java Program to Generate All Pairs of Subsets Whose Union Make the Set
Intro to Inversion of Control and Dependency Injection with Spring
Introduction to Thread Pools in Java
Java Program to Implement Miller Rabin Primality Test Algorithm
DynamoDB in a Spring Boot Application Using Spring Data
How to Change the Default Port in Spring Boot
Guide to the Java Clock Class
Java Program to Compute DFT Coefficients Directly
Java Program to Implement Fermat Factorization Algorithm
Giới thiệu Design Patterns
Mảng (Array) trong Java
Java Program to Perform Complex Number Multiplication
Java Program to Generate Random Partition out of a Given Set of Numbers or Characters
Versioning a REST API
Lớp Arrarys trong Java (Arrays Utility Class)
Jackson JSON Views
Spring Boot - Admin Server
Java Program to Implement Sieve Of Atkin
How to Get the Last Element of a Stream in Java?
Wrapper Classes in Java
Spring MVC Async vs Spring WebFlux
Java Program to Implement Selection Sort
Mix plain text and HTML content in a mail