Føj et tegn til en streng på en given position

1. Introduktion

I denne hurtige vejledning vil vi demonstrere, hvordan man tilføjer et tegn på en given position i en Snor i Java.

Vi præsenterer tre implementeringer af en simpel funktion, der tager originalen Snor, et tegn og den position, hvor vi skal tilføje det.

Da String-klassen er endelig og uforanderlig, skal funktionen returnere en ny Snor med den tilføjede karakter.

2. Brug af et tegn Array

Her er ideen at oprette et nyt tegnarray og kopiere tegnene fra originalen Snor før den givne position.

Derefter sætter vi det nye tegn på positionen og kopierer resten af ​​tegnene fra originalen Snor i de efterfølgende positioner i det nye array.

Endelig konstruerer vi det ønskede Snor fra den matrix.

public String addChar (String str, char ch, int position) {int len ​​= str.length (); char [] updatedArr = ny char [len + 1]; str.getChars (0, position, updatedArr, 0); updatedArr [position] = ch; str.getChars (position, len, updatedArr, position + 1); returner ny streng (updatedArr); }

Sammenlignet med de to andre metoder er dette en designtilgang på lavt niveau og giver os mest fleksibilitet.

3. Brug af underlag Metode

En lettere og højere tilgang er at bruge understreng () metode til Snor klasse. Det forbereder Snor ved sammenkædning:

  1. Substring af originalen Snor før positionen
  2. Den nye karakter
  3. Substring af originalen Snor efter stillingen
public String addChar (String str, char ch, int position) {return str.substring (0, position) + ch + str.substring (position); }

Selvom ovenstående kode er mere læselig, det har en ulempe, at det skaber et antal midlertidige objekter til at bestemme resultatet. Som Snor er en uforanderlig klasse, hvert kald til sin understreng () metode skaber en ny Snor eksempel.

Endelig, når vi sammenkæder delene, opretter kompilatoren en StringBuilder objekt til at tilføje dem en efter en. Hver Snor og StringBuilder objekt tildeler separate hukommelsesplaceringer til det interne tegnarray.

Denne implementering skal også kopiere alle tegn tre gange fra et array til et andet.

Hvis vi har brug for at kalde metoden et stort antal gange, kan de midlertidige objekter muligvis udfylde bunkehukommelsen, og det vil udløse GC meget ofte. Dette kan også påvirke ydelsen til en vis grad.

4. Brug af en StringBuilder

StringBuilder er en hjælpeklasse leveret af Java bibliotek til at konstruere og manipulere Snor objekter på en række måder.

Vi kan implementere den samme funktionalitet ved hjælp af indsæt () metode til StringBuilder klasse:

public String addChar (String str, char ch, int position) {StringBuilder sb = new StringBuilder (str); sb. indsættelse (position, ch); returner sb.toString (); }

Ovenstående kode skal kun oprette en enkelt StringBuilder objekt for at indsætte tegnet på positionen. Den tildeler den samme mængde hukommelse som originalen Snor har, men for at skabe et sted for det nye tegn skifter det underliggende array de næste tegn med 1 position.

Selvom du bruger en StringBuilder kan være langsommere, har den ikke hukommelsesbyrden ved initialisering af midlertidige objekter. Vi ender også med kode, der er enkel og læsbar.

5. Konklusion

I denne artikel fokuserede vi på flere måder at tilføje et tegn på en Snor objekt i Java. Vi har set, at implementeringen ved hjælp af et tegnarray giver den bedste ydeevne, og det med underlag metode giver en mere læselig tilgang.

Den foretrukne måde at implementere løsningen på er at bruge det StringBuilder klasse - da det er simpelt, mindre udsat for fejl og tilbyder god og stabil ydeevne.

Som sædvanlig er den komplette kildekode til ovenstående tutorial tilgængelig på GitHub.