Martin Ehmsen <thames@get2net.dk> wrote in message
news:9s4c4g$ktt$1@sunsite.dk...
> Hej alle...
>
> Jeg sidder i øjeblikket og roder lidt med nogle manipulationer af
> chars.
> Disse chars bliver manipuleret og derefter sat sammen til en
> String på
> følgende måde:
>
> String total;
> while( derErFlereChars ) {
> char c = ...
> // Operationer på charen
> total += c;
> }
>
> Nu er problemet blot det, at jeg i de fleste har temmelig mange
> chars at lege med. Typisk 10000.
> Men algoritmen ovenfor bliver langsommere desto flere chars
> der er blevet sat på strengen.
<SNIP>
> Mit bud på grunden er at internt bliver String's opbevaret som et
> char array. Når jeg vil indsætte et nyt tegn først i den gamle
> String, så er det ikke sikkert der er plads til at udvide arrayet og
> derfor kan det være at hele arrayet skal kopieres til et nyt sted i
> hukommelsen og så indsætte det nye tegn.
>
> Mvh.
> Martin Ehmsen
Hej Martin
Brug en StringBuffer i stedet for en String som variablen total. Så
kan du i slutningen konvertere StringBufferen til en String.
Problemet med din kode er, at der oprettes et nyt String objekt, for
hver iteration (en meget dyr operation).
Se evt. "Why Two String Classes" fra Sun.
http://java.sun.com/docs/books/tutorial/java/data/whytwo.html
"You typically use string buffers for constructing character data
dynamically: for example, when reading text data from a file.
Because strings are constants, they are more efficient to use than
are string buffers and can be shared".
--
Mikkel Bundgaard
IT University of Copenhagen
http://officehelp.gone.dk
ICQ# 116946261
Se SpaceCommunicator - en peer-to-peer chat-applikation i Java