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:
Filtering a Stream of Optionals in Java
Java Program to Implement Bresenham Line Algorithm
Reversing a Linked List in Java
Java – Write to File
Overview of the java.util.concurrent
Xử lý ngoại lệ trong Java (Exception Handling)
Bootstrap a Web Application with Spring 5
Introduction to Thread Pools in Java
Java Program to Check if a Directed Graph is a Tree or Not Using DFS
@Order in Spring
Java Program to Perform Encoding of a Message Using Matrix Multiplication
Using Optional with Jackson
Java Program to Implement Euclid GCD Algorithm
Convert String to int or Integer in Java
Removing all duplicates from a List in Java
Lớp Arrarys trong Java (Arrays Utility Class)
Java Program to Perform Sorting Using B-Tree
Multi Dimensional ArrayList in Java
SOAP Web service: Authentication trong JAX-WS
Java Program to Perform Polygon Containment Test
Zipping Collections in Java
Java Program to Implement Sieve Of Atkin
Inheritance with Jackson
Java 8 StringJoiner
Java Program to Implement Best-First Search
Spring’s RequestBody and ResponseBody Annotations
Introduction to PCollections
Spring Boot - Enabling Swagger2
Java Program to Use Dynamic Programming to Solve Approximate String Matching
Converting a List to String in Java
Marker Interface trong Java
Java Program to Perform Addition Operation Using Bitwise Operators