Chuyển đổi một danh sách thành chuỗi trong Java

1. Giới thiệu

Trong bài viết nhanh này, chúng ta sẽ xem xét cách chuyển đổi Danh sách các phần tử thành Chuỗi . Điều này có thể hữu ích trong một số trường hợp nhất định như in nội dung vào bảng điều khiển ở dạng con người có thể đọc được để kiểm tra / gỡ lỗi.

2. Chuẩn toString () trên danh sách

Một trong những cách đơn giản nhất là chỉ cần gọi phương thức toString () trên Danh sách :

@Test public void whenListToString_thenPrintDefault() { List intLIst = Arrays.asList(1, 2, 3); System.out.println(intLIst); }

Đầu ra:

[1, 2, 3]

Kỹ thuật này sử dụng nội bộ phương thức toString () của loại phần tử trong Danh sách . Trong trường hợp của chúng tôi, chúng tôi đang sử dụng kiểu Integer có triển khai đúng phương thức toString () .

Nếu chúng ta đang sử dụng kiểu tùy chỉnh của mình, chẳng hạn như Person , thì chúng ta cần đảm bảo rằng lớp Person ghi đè phương thức toString () và không dựa vào triển khai mặc định. Nếu phương thức toString () không được triển khai đúng cách, bạn có thể nhận được kết quả không mong muốn:

[[email protected], [email protected], [email protected]]

3. Triển khai Tùy chỉnh Sử dụng Bộ sưu tập

Thông thường, chúng tôi có thể cần hiển thị đầu ra ở một định dạng khác.

So với ví dụ trước, hãy thay dấu phẩy (,) bằng dấu gạch ngang (-) và dấu ngoặc vuông ([,]) bằng một tập hợp các dấu ngoặc nhọn ({,}):

@Test public void whenCollectorsJoining_thenPrintCustom() { List intList = Arrays.asList(1, 2, 3); String result = intList.stream() .map(n -> String.valueOf(n)) .collect(Collectors.joining("-", "{", "}")); System.out.println(result); }

Đầu ra:

{1-2-3}

Các Collectors.joining () phương pháp đòi hỏi một CharSequence , vì vậy chúng ta cần phải lập bản đồ các Integer để chuỗi . Ý tưởng tương tự có thể được sử dụng trong trường hợp của bất kỳ lớp nào khác ngay cả khi chúng ta không có quyền truy cập vào mã của lớp đó.

4. Sử dụng Thư viện Bên ngoài

Bây giờ chúng ta sẽ thấy cách sử dụng lớp StringUtils của Apache Commons để đạt được kết quả tương tự.

4.1. Maven phụ thuộc

 org.apache.commons commons-lang3 3.6 

Phiên bản mới nhất của phụ thuộc có thể được tìm thấy tại đây.

4.2. Thực hiện

Việc triển khai thực sự là một cuộc gọi phương thức duy nhất:

@Test public void whenStringUtilsJoin_thenPrintCustom() ")); 

Đầu ra:

1|2|3

Một lần nữa, việc triển khai này phụ thuộc nội bộ vào việc triển khai toString () của kiểu mà chúng ta đang xem xét.

5. Kết luận

Trong bài viết này, chúng ta đã thấy việc chuyển đổi Danh sách thành Chuỗi bằng các kỹ thuật khác nhau dễ dàng như thế nào .

Như mọi khi, mã nguồn đầy đủ cho bài viết này có thể được tìm thấy trên GitHub.