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:
Java Program to do a Depth First Search/Traversal on a graph non-recursively
Hướng dẫn Java Design Pattern – Observer
Servlet 3 Async Support with Spring MVC and Spring Security
Java Program to implement Bit Set
Java Program to Solve a Matching Problem for a Given Specific Case
Java Program to Implement Trie
Java Program to Implement HashMap API
Understanding Memory Leaks in Java
Java Program to Implement Slicker Algorithm that avoids Triangulation to Find Area of a Polygon
A Guide To UDP In Java
Introduction to Spring Cloud OpenFeign
Biến trong java
Java Program to Implement Max Heap
Generate Spring Boot REST Client with Swagger
Converting Java Date to OffsetDateTime
Lớp TreeMap trong Java
Giới thiệu Swagger – Công cụ document cho RESTfull APIs
Java – InputStream to Reader
Java Program to Implement Solovay Strassen Primality Test Algorithm
Java Program to Implement Fermat Factorization Algorithm
Tránh lỗi NullPointerException trong Java như thế nào?
Java Program to Implement Randomized Binary Search Tree
Java Program to Implement Suffix Tree
Spring Security 5 – OAuth2 Login
Java Web Services – Jersey JAX-RS – REST và sử dụng REST API testing tools với Postman
Java Program to Implement Ternary Heap
Java Program to Use Dynamic Programming to Solve Approximate String Matching
What is Thread-Safety and How to Achieve it?
Period and Duration in Java
Spring Security Remember Me
Làm thế nào tạo instance của một class mà không gọi từ khóa new?
Lớp lồng nhau trong java (Java inner class)