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:
Cachable Static Assets with Spring MVC
Spring Boot: Customize Whitelabel Error Page
Spring Boot - Actuator
Function trong Java 8
Java Program to Implement First Fit Decreasing for 1-D Objects and M Bins
Initialize a HashMap in Java
Java Program to Implement the Alexander Bogomolny’s UnOrdered Permutation Algorithm for Elements Fro...
Spring Security Registration – Resend Verification Email
Java Program to Implement Slicker Algorithm that avoids Triangulation to Find Area of a Polygon
Java Program to Find Maximum Element in an Array using Binary Search
Java – Try with Resources
Java Program to Implement Unrolled Linked List
Configuring a DataSource Programmatically in Spring Boot
Từ khóa static và final trong java
Java – Random Long, Float, Integer and Double
Base64 encoding và decoding trong Java 8
How to Get All Spring-Managed Beans?
Spring Boot - Service Components
StringBuilder vs StringBuffer in Java
Java Program to Find Nearest Neighbor Using Linear Search
DynamoDB in a Spring Boot Application Using Spring Data
Comparing Two HashMaps in Java
Recommended Package Structure of a Spring Boot Project
Java Program to Search for an Element in a Binary Search Tree
Using Spring ResponseEntity to Manipulate the HTTP Response
Intro to the Jackson ObjectMapper
Converting Between an Array and a Set in Java
Spring Boot - Runners
A Guide to Spring Boot Admin
Java Program to Implement the String Search Algorithm for Short Text Sizes
Introduction to Spring Cloud Netflix – Eureka
Validate email address exists or not by Java Code