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:
OAuth2 Remember Me with Refresh Token
Java Program to Implement Counting Sort
Java 8 Predicate Chain
Custom Error Pages with Spring MVC
Guava Collections Cookbook
Iterating over Enum Values in Java
Java Program to Print only Odd Numbered Levels of a Tree
JUnit5 Programmatic Extension Registration with @RegisterExtension
Java Program to implement Bit Matrix
Giới thiệu SOAP UI và thực hiện test Web Service
Java Program to Perform Postorder Recursive Traversal of a Given Binary Tree
Java Program to Repeatedly Search the Same Text (such as Bible by building a Data Structure)
Java Program to Generate Randomized Sequence of Given Range of Numbers
Java Program to Implement Bloom Filter
Quản lý bộ nhớ trong Java với Heap Space vs Stack
Remove the First Element from a List
RestTemplate Post Request with JSON
Guide to Spring Cloud Kubernetes
Java Program to Use the Bellman-Ford Algorithm to Find the Shortest Path
Lập trình đa luồng trong Java (Java Multi-threading)
Java Program to Implement Cubic convergence 1/pi Algorithm
Giới thiệu Design Patterns
Map Interface trong java
Java Program to Evaluate an Expression using Stacks
Checking for Empty or Blank Strings in Java
Java Program to Check if a Given Set of Three Points Lie on a Single Line or Not
Constructor Dependency Injection in Spring
Compact Strings in Java 9
Java Program to Implement Vector API
Java Program to Generate All Subsets of a Given Set in the Gray Code Order
Spring Security Login Page with React
Java 8 StringJoiner