Browsed by
חודש: מרץ 2017

בקטנה: StringBuilder

בקטנה: StringBuilder

במהלך עבודה עם Java ניתקל מדי פעם בצורך לשרשר Strings. לדוגמא, לצרף לכתובת url פרמטרים שונים, ועוד מקרים נוספים.

זו לא בעיה, נכון? שפת Java (כמו שפות מודרניות רבות) תומכת באופרטור '+' כדי לשרשר Strings. כלומר, אפשר פשוט לכתוב כך:

String url = baseUrl + "?q=hello&p=win";

אבל מה עם מדובר בעבודה קצת יותר רצינית מאשר לחבר שני סטרינגים קצרים? לדוגמא, פונקציה שמשרשרת מערך של סטרינגים (באורך לא ידוע) ל- String אחד ארוך.

אפשר לכתוב את זה ככה:

String joinWords(String[] words) {
  String result = "";
  for (String w : words) {
    result = result + w;
  }
  return result;
}

אבל יש כאן בעיה: זה מאד לא יעיל. String, הוא אובייקט immutable, כלומר, לא ניתן לבצע עליו שינויים. בכל מניפולציה שעושים על String – נוצר אחד חדש. String מכיל בתוכו מערך של תווים, כאשר משרשרים שני סטרינגים אחד אחרי השני, אנחנו בעצם יוצרים מחדש שני מערכי תווים אחד אחרי השני אל תוך מערך אחד גדול.

במקום זה, אפשר להשתמש ב- StringBuilder:

String joinWords(String[] words) {
  StringBuilder result = new StringBuilder();
  for (String w : words) {
    result.append(w);
  }
  return result.toString();
}

StringBuilder עושה את השינויים במקום, עם התווים שכבר קיימים, מה שנותן זמן ריצה אופטימלי.