Karakter hozzáadása egy karakterlánchoz egy adott pozícióban

1. Bemutatkozás

Ebben a gyors bemutatóban megtesszük bemutatni, hogyan lehet egy karaktert hozzáadni az a Húr ban ben Jáva.

Bemutatunk egy egyszerű függvény három megvalósítását, amely az eredetit veszi át Húr, egy karakter és az a hely, ahova hozzá kell adnunk.

Mivel a String osztály végleges és megváltoztathatatlan, a függvénynek újat kell adnia Húr a hozzáadott karakterrel.

2. Karakter használata Sor

Itt az ötlet egy új karaktertömb létrehozása és a karakterek másolása az eredetiből Húr az adott pozíció előtt.

Ezt követően az új karaktert helyezzük a pozícióba, és a többi karaktert lemásoljuk az eredetiről Húr az új tömb következő pozícióiban.

Végül elkészítjük a kívánt Húr abból a tömbből.

public String addChar (String str, char ch, int helyzet) {int len ​​= str.length (); char [] updatedArr = új char [len + 1]; str.getChars (0, pozíció, updatedArr, 0); updatedArr [pozíció] = ch; str.getChars (pozíció, len, updatedArr, pozíció + 1); return new String (updatedArr); }

A másik két módszerhez képest ez egy alacsony szintű tervezési megközelítés, amely a legnagyobb rugalmasságot biztosítja számunkra.

3. A szubsztring Módszer

Könnyebb és magasabb szintű megközelítés a szubsztring () módszere Húr osztály. Előkészíti a Húr összefűzésével:

  1. Az eredeti részvázlata Húr a pozíció előtt
  2. Az új karakter
  3. Az eredeti részvázlata Húr a pozíció után
public String addChar (String str, char ch, int position) {return str.substring (0, position) + ch + str.substring (pozíció); }

Bár a fenti kód olvashatóbb, hátránya, hogy számos ideiglenes objektumot hoz létre az eredmény meghatározásához. Mint Húr változhatatlan osztály, minden hívása annak szubsztring () módszer újat hoz létre Húr példa.

Végül, amikor összefűzzük az alkatrészeket, a fordító létrehoz egy StringBuilder objektum az egyesével való kiegészítéshez. Minden Húr és StringBuilder Az objektum külön memóriahelyeket rendel a belső karaktertömbhöz.

Ennek a megvalósításnak háromszor is át kell másolnia az összes karaktert egyik tömbből a másikba.

Ha nagyon sokszor meg kell hívnunk a módszert, az ideiglenes objektumok kitölthetik a kupac memóriát, és ez nagyon gyakran kiváltja a GC-t. Ez valamennyire befolyásolhatja a teljesítményt is.

4. A StringBuilder

StringBuilder egy közüzemi osztály, amelyet a Jáva könyvtár létrehozására és manipulálására Húr objektumok számos módon.

Ugyanezt a funkcionalitást a beillesztés () módszere StringBuilder osztály:

public String addChar (String str, char ch, int position) {StringBuilder sb = új StringBuilder (str); sb. beszúrás (pozíció, ch); return sb.toString (); }

A fenti kódnak csak egyetlen példányt kell létrehoznia StringBuilder objektum a karakter beszúrásához a pozícióban. Ugyanannyi memóriát oszt ki, mint az eredeti Húr van, de hogy helyet teremtsen az új karakter számára, a mögöttes tömb 1 pozícióval eltolja a következő karaktereket.

Bár a StringBuilder lassabb lehet, nincs memóriaterhe az ideiglenes objektumok inicializálásakor. Végül egy egyszerű és olvasható kóddal is rendelkezünk.

5. Következtetés

Ebben a cikkben egy karakter hozzáadásának több módjára összpontosítottunk a Húr objektum be Jáva. Láttuk, hogy a karaktertömb segítségével történő megvalósítás a legjobb teljesítményt nyújtja, és ez a szubsztring módszer olvashatóbb megközelítést ad.

A megoldás megvalósításának előnyben részesített módja a a StringBuilder osztály - mivel egyszerű, kevésbé hibára hajlamos, és jó és stabil teljesítményt nyújt.

Szokás szerint a fenti oktatóanyag teljes forráskódja elérhető a GitHubon.