Sobes.tech
Junior — Middle

Aké prístupy a metódy možno použiť na prevenciu nadmerného využívania pamäte pri sekvenčnom spájaní reťazcov v rámci slučky?

sobes.tech AI

Odpoveď od AI

Pri zliepaní reťazcov v cykle v Jave je dôležité vyhnúť sa vytváraniu množstva medzičasových objektov typu String, pretože reťazce v Jave sú nemenné (immutable). Každý operátor + v cykle vytvára nový objekt, čo vedie k nadmernému využívaniu pamäte a zníženiu výkonu.

Na prevenciu toho sa používajú nasledujúce prístupy:

  • StringBuilder — trieda, ktorá umožňuje efektívne zhromažďovanie reťazcov bez vytvárania nových objektov pri každom pridaní. Použite jeho metódu append() vnútri cyklu a po dokončení zavolajte toString() na získanie konečného reťazca.

  • StringBuffer — podobný ako StringBuilder, ale je bezpečný pre viacvláknové prostredia (synchronizovaný). Používa sa, ak je potrebný viacvláknový prístup.

Príklad s StringBuilder:

StringBuilder sb = new StringBuilder();
for (int i = 0; i < 1000; i++) {
    sb.append("riadok ").append(i).append("\n");
}
String výsledok = sb.toString();

Tento prístup výrazne znižuje záťaž na pamäť a zlepšuje výkon v porovnaní s spájaním reťazcov pomocou + v cykle.