Tôi chắc rằng bạn đã từng gặp trường hợp muốn nối nhiều dòng. Nếu bạn không viết bằng Java thì có thể bạn đã sử dụng một hàm do
join()
chính ngôn ngữ lập trình cung cấp cho bạn. Nếu bạn viết bằng Java, bạn không thể làm điều này vì một lý do đơn giản - phương pháp này không tồn tại. Thư viện lớp tiêu chuẩn trong Java cung cấp cho bạn các công cụ để tạo ứng dụng GUI, truy cập cơ sở dữ liệu, gửi dữ liệu qua mạng, thực hiện chuyển đổi XML hoặc gọi các phương thức từ thư viện bên thứ ba. Một phương pháp đơn giản để nối một tập hợp các chuỗi không được đưa vào. Để làm điều này, bạn cần một trong nhiều thư viện của bên thứ ba. May mắn thay, điều này đã kết thúc! Trong Java 8 cuối cùng chúng ta cũng có thể nối các chuỗi! Java 8 đã thêm một lớp mới gọi là StringJoiner
. Như tên cho thấy, chúng ta có thể sử dụng lớp này để nối các chuỗi:
StringJoiner joiner = new StringJoiner(",");
joiner.add("foo");
joiner.add("bar");
joiner.add("baz");
String joined = joiner.toString(); // "foo,bar,baz"
// add() calls can be chained
joined = new StringJoiner("-")
.add("foo")
.add("bar")
.add("baz")
.toString(); // "foo-bar-baz"
String
sử dụng hai phương thức tĩnh mới join() StringJoiner
:
// join(CharSequence delimiter, CharSequence... elements)
String joined = String.join("/", "2014", "10", "28" ); // "2014/10/28"
// join(CharSequence delimiter, Iterable<? extends CharSequence> elements)
List<String> list = Arrays.asList("foo", "bar", "baz");
joined = String.join(";", list); // «foo;bar;baz"
Ngoài ra, để nối các chuỗi, có một chuỗi đặc biệt Collector
trong API mới sử dụng các luồng:
List<Person> list = Arrays.asList(
new Person("John", "Smith"),
new Person("Anna", "Martinez"),
new Person("Paul", "Watson ")
);
String joinedFirstNames = list.stream()
.map(Person::getFirstName)
.collect(Collectors.joining(", ")); // "John, Anna, Paul»
Bằng cách này, chúng tôi thực sự không cần thư viện của bên thứ ba để nối chuỗi nữa! Bài báo gốc
GO TO FULL VERSION