Sobes.tech
Junior — Middle

Чӣ гуна муносибатҳо ва усулҳо метавонанд барои пешгирии истифодаи зиёди хотира дар пайваст кардани сатрҳо дар дохили доира истифода шаванд?

sobes.tech AI

Ҷавоб аз AI

Дар вақти пайваст кардани сатрҳо дар дохили як давр дар Java, муҳим аст, ки аз эҷоди миқдори зиёди объектҳои миёнаи String худдорӣ кунед, зеро сатрҳо дар Java тағйирнопазир (immutable) мебошанд. Ҳар оператори + дар дохили давр як объект нав месозад, ки ба истифодаи зиёди хотира ва кам шудани иҷроиш оварда мерасонад.

Барои пешгирӣ аз ин, ба кор бурдани роҳҳои зерин муҳим аст:

  • StringBuilder — як синф, ки имкон медиҳад, ки сатрҳоро самаранок ҷамъоварӣ кунед, бе эҷоди объектҳои нав дар ҳар илова. Аз методи append() дар дохили давр истифода баред ва пас аз анҷом додан, toString()-ро даъват кунед барои гирифтани сатрҳои ниҳоӣ.

  • StringBuffer — монанд ба StringBuilder, аммо барои муҳитҳои бисёрсӯзӣ (синхронизатсияшуда) бехатар аст. Агар дастрасии бисёрсӯзӣ лозим бошад, истифода мешавад.

Масалан бо истифодаи StringBuilder:

StringBuilder sb = new StringBuilder();
for (int i = 0; i < 1000; i++) {
    sb.append("хат ").append(i).append("\n");
}
String натиҷа = sb.toString();

Ин усул ба таври назаррас борро ба хотира кам мекунад ва иҷроишро нисбат ба пайваст кардани сатрҳо бо + дар дохили цикл беҳтар мекунад.