אני בטוח שהיית במצב שבו רצית לשרשר שורות מרובות. אם לא כתבת ב-Java, כנראה שהשתמשת בפונקציה
join()
שסיפקת לך שפת התכנות עצמה. אם כתבת ב-Java, לא יכולת לעשות זאת מסיבה פשוטה - השיטה הזו לא הייתה קיימת. ספריית הכיתה הסטנדרטית ב-Java סיפקה לך את הכלים ליצור יישומי GUI, לגשת לבסיסי נתונים, לשלוח נתונים דרך הרשת, לבצע טרנספורמציות של XML או להתקשר לשיטות מספריות של צד שלישי. שיטה פשוטה לשרשור אוסף של מחרוזות לא נכללה. לשם כך, היית זקוק לאחת מספריות צד שלישי רבות. למרבה המזל, זה הגיע לסיומו! בג'אווה 8 נוכל סוף סוף לשרשר מחרוזות! Java 8 הוסיפה מחלקה חדשה בשם StringJoiner
. כפי שהשם מרמז, אנו יכולים להשתמש במחלקה זו כדי לשרשר מחרוזות:
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
משתמש בשתי שיטות סטטיות חדשות 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"
כמו כן, לשרשור מחרוזות יש אחד מיוחד Collector
ב-API החדש באמצעות זרמים:
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»
כך אנחנו באמת לא צריכים ספריות של צד שלישי כדי לשרשר מחרוזות! מאמר מקורי
GO TO FULL VERSION