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 SimpeBindings API
Hướng dẫn sử dụng Java Generics
Receive email by java client
Java Program to Implement Interval Tree
Spring MVC + Thymeleaf 3.0: New Features
Encode/Decode to/from Base64
A Guide To UDP In Java
HttpClient Connection Management
RegEx for matching Date Pattern in Java
Java Program to Use Above Below Primitive to Test Whether Two Lines Intersect
LinkedHashSet trong Java hoạt động như thế nào?
Calling Stored Procedures from Spring Data JPA Repositories
How to Get the Last Element of a Stream in Java?
Lập trình mạng với java
Java Program to Implement Gabow Algorithm
Java Program to Find Second Smallest of n Elements with Given Complexity Constraint
Date Time trong Java 8
Consuming RESTful Web Services
How to Set TLS Version in Apache HttpClient
Guide to PriorityBlockingQueue in Java
Java Program to Solve TSP Using Minimum Spanning Trees
Inject Parameters into JUnit Jupiter Unit Tests
Java Program to Check if an UnDirected Graph is a Tree or Not Using DFS
Java Program to Implement Hamiltonian Cycle Algorithm
Spring Data MongoDB – Indexes, Annotations and Converters
Java Program to Solve a Matching Problem for a Given Specific Case
Sorting in Java
@DynamicUpdate with Spring Data JPA
Getting Started with Custom Deserialization in Jackson
Java Program to Implement the RSA Algorithm
Hướng dẫn sử dụng String Format trong Java
Java Program to Implement ArrayDeque API