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:
Spring Boot - Tracing Micro Service Logs
Guide to WeakHashMap in Java
Java Program to Implement HashMap API
Spring Security Login Page with React
Java Program to Check if any Graph is Possible to be Constructed for a Given Degree Sequence
OAuth 2.0 Resource Server With Spring Security 5
Java Program to Implement IdentityHashMap API
Split a String in Java
Java Program to Represent Graph Using Incidence List
Java Program to Implement Dijkstra’s Algorithm using Set
Server-Sent Events in Spring
Request a Delivery / Read Receipt in Javamail
Hướng dẫn Java Design Pattern – Service Locator
Java Program to Find Shortest Path Between All Vertices Using Floyd-Warshall’s Algorithm
Java Program to Generate a Graph for a Given Fixed Degree Sequence
Spring Boot - Securing Web Applications
Java Program to Implement RoleUnresolvedList API
Java Program to Implement Booth Algorithm
Java Program to Delete a Particular Node in a Tree Without Using Recursion
Converting between an Array and a List in Java
Java Program to Implement Sieve Of Atkin
Java Switch Statement
Java Program to Implement Fenwick Tree
Introduction to PCollections
Java Program to Implement Affine Cipher
Java Program to Perform Quick Sort on Large Number of Elements
Sending Emails with Java
Giới thiệu SOAP UI và thực hiện test Web Service
Java Program to Implement Hash Tables Chaining with Binary Trees
Tìm hiểu cơ chế Lazy Evaluation của Stream trong Java 8
A Guide to JPA with Spring
Consuming RESTful Web Services