Trong Java, chúng ta có nhiều cách để chuyển đổi từ một đối tượng List kiểu String sang một đối tượng String với một dấu ngăn cách giữa các phần tử của đối tượng List. Trong bài viết này, mình sẽ hướng dẫn cho các bạn một số cách sau:
Cách đầu tiên là chúng ta sẽ sử dụng đối tượng StringBuilder của Java.
Nếu bạn nào chưa biết về đối tượng StringBuilder thì có thể tham khảo bài viết này.
Chúng ta sẽ đọc lần lượt từng phần tử trong đối tượng List và sử dụng đối tượng StringBuilder để thêm dấu ngăn cách giữa các phần tử đó. Lưu ý là ở phần tử đầu tiên, chúng ta không thêm dấu ngăn cách nhé các bạn!
Cụ thể phương thức này chúng ta sẽ viết như sau:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
public static String join(List<String> list, char delimiter) { StringBuilder sb = new StringBuilder(); for (int i = 0; i < list.size(); i++) { String s = list.get(i); if (i == 0) { sb.append(s); continue; } sb.append(delimiter + s); } return sb.toString(); } |
Ví dụ:
Cách thứ hai là chúng ta sẽ sử dụng phương thức collect() đối tượng Stream được giới thiệu từ Java 8.
1 2 3 |
public static String join(List<String> list, char delimiter) { return list.stream().collect(Collectors.joining(String.valueOf(delimiter))); } |
Ví dụ:
Cách thứ ba là chúng ta sẽ sử dụng phương thức static join() của đối tượng String.
Từ Java 8, Java giới thiệu một phương thức mới tên là join() trong đối tượng String giúp việc chuyển đổi từ đối tượng List sang đối tượng String của chúng ta dễ dàng hơn.
1 2 3 |
public static String join(List<String> list, char delimiter) { return String.join(String.valueOf(delimiter), list); } |
Ví dụ:
Cách cuối cùng mà các bạn có thể sử dụng đó là sử dụng một thư viện có sẵn Apache Commons Lang của tổ chức Apache.
Thư viện này có cung cấp cho chúng ta một phương thức với tên gọi là join() trong lớp StringUtils, để chúng ta có thể chuyển đổi từ đối tượng List qua đối tượng String một cách đơn giản và dễ dàng.
Vì nó là một phương thức static nên bạn chỉ cần:
1 |
StringUtils.join(List list, char delimiter); |
Ví dụ:
abc@abc.com
string s = list.get(i) hình như anh nhầm get(0) ùi thì phải
Khanh Nguyen
À, đúng rồi! Thanks em nhé! 😀
Đã sửa lại.