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 Implement Sorted Circularly Singly Linked List
Different Ways to Capture Java Heap Dumps
Java Program to Implement Shoelace Algorithm
Java Program to Perform Searching in a 2-Dimension K-D Tree
Logging a Reactive Sequence
Java Program to Implement Pairing Heap
Java Program to Implement Splay Tree
Java Program to Implement Double Order Traversal of a Binary Tree
Java Program to Implement Find all Forward Edges in a Graph
Java Program to Implement Gabow Algorithm
Spring Data JPA @Query
Binary Numbers in Java
Java Program to Optimize Wire Length in Electrical Circuit
Hướng dẫn Java Design Pattern – Transfer Object
Getting a File’s Mime Type in Java
Introduction to Spring Data JDBC
Hashtable trong java
Java Program to Implement SynchronosQueue API
Spring Boot Configuration with Jasypt
Java Program to Compute DFT Coefficients Directly
Java Program to Implement Graph Coloring Algorithm
Java – InputStream to Reader
Registration with Spring Security – Password Encoding
Spring Security Logout
Database Migrations with Flyway
JPA/Hibernate Persistence Context
Java Program to Check if a Given Graph Contain Hamiltonian Cycle or Not
Spring Boot - Google OAuth2 Sign-In
Java Program to Implement the Checksum Method for Small String Messages and Detect
Hướng dẫn Java Design Pattern – State
Convert char to String in Java
Guide to DelayQueue