Avatar billede mr_mudderkode Nybegynder
15. juli 2002 - 14:29 Der er 14 kommentarer og
1 løsning

Konvertering af arrays

Er der nogen der kender til en elegant måde at konvertere et Object[] af en given størrelse til String[] - naturligvis i samme størrelse, men hvor alle objekterne er konverteret til String objekter....
Avatar billede mr_mudderkode Nybegynder
15. juli 2002 - 14:30 #1
Jeg kan naturligvis køre igennem hele Object[] og sætte de enkelte instanser af String[]...

strArr[i] = objArr[i].toString()

men jeg håbede på noget smukkere...
Avatar billede el_gnu Nybegynder
15. juli 2002 - 14:40 #2
tror ikke du får det pænere end et for-loop og toString. Havde du håbet på en funktion i Object à la

static String[] ojbArrayToString (Object[] objects)

?
Avatar billede mr_mudderkode Nybegynder
15. juli 2002 - 14:55 #3
Tja... Bare et eller andet standardiseret...
Avatar billede disky Nybegynder
15. juli 2002 - 14:56 #4
Så prøv med:

static String[] ojbArrayToStringArray (Object[] objects)
{
  String[] result=new String[object.length];
  for(int x=0;x<objects.length;x++)
  {
    result[x]=(String)objects[x];
  }
  return result;
}

er ikke testet.
Avatar billede mr_mudderkode Nybegynder
15. juli 2002 - 14:57 #5
Problemet er at jeg starter med en Collection der har en toArray() metode, men den returnerer netop et Object[] array, og jeg skal så have dem konverteret til et String[] array.

Det virker bare som en masse benarbejde, men det kan vel ikke være anderledes....
Avatar billede mr_mudderkode Nybegynder
15. juli 2002 - 14:58 #6
disky >> Det er lige præcis det jeg angav at jeg allerede gjorde. Jeg har bare en linie

result[x]=objects[x].toString();

(Bryder mig ikke om typecasting)
Avatar billede disky Nybegynder
15. juli 2002 - 15:44 #7
hvis du ikke kan lide typecasting find et typeløst sprog.

Når du har et array af objecter som er Strings er der ingen grund til at konvertere dem.

Og nej der findes ikke nogle standard metoder til det, eller skulle der være metoder der kunne typecaste fra alt til alt andet ?
Avatar billede disky Nybegynder
15. juli 2002 - 15:44 #8
Du siger du håbede der var noget smukkere, det lyder mere som du ønsker et sprog hvor udvikleren ikke skal tænke, må jeg feks. foreslå Delphi, der skal man næsten ikke tænke selv :)
Avatar billede mr_mudderkode Nybegynder
15. juli 2002 - 16:42 #9
De kommentarer må jeg lige smide et svar på...

Man kan sagtens skifte type uden at gøre brug af typecasting. Eksempelvis .toString() metoden.

> Når du har et array af objecter som er Strings er der ingen grund til at konvertere dem.

Huh? Jeg har brug for Strings, men har Objekter. Strings er Objekter, men Objekter er ikke Strings, og derfor kan jeg ikke bruge de metoder der er påhæftet Strings klassen hvis jeg lader dem forblive Objekter...? Hvad snakker du om?

> skulle der være metoder der kunne typecaste fra alt til alt andet ?

Ligesom der findes en toString() metode, kunne der da meget vel være en tilsvarende metode til at gøre det samme arbejde med et array...?

> Du siger du håbede der var noget smukkere, det lyder mere som du ønsker et sprog hvor udvikleren ikke skal tænke, må jeg feks. foreslå Delphi, der skal man næsten ikke tænke selv :)

Jeg ved ikke om det er et rent humoristisk indlæg eller hvad? Gør du aldrig brug af de metoder der nu engang findes i de eksisterende klasser? Du programmer selv nye metoder fra bunden hver gang? Det eneste jeg spurgte til var om der var nogen der kendte til en sådan metode, da jeg ikke finder det særlig smukt at skulle bladre igennem et array for at skifte type på indholdet.
Avatar billede disky Nybegynder
15. juli 2002 - 17:41 #10
okay du har misforstået et par ting:
Dette går .toString() 
  public String toString() {
    return this;
    }

Det svarer sjovt nok til en typecast.

>og derfor kan jeg ikke bruge de metoder der er påhæftet Strings klassen
>hvis jeg lader dem forblive Objekter...? Hvad snakker du om?

Nå nej selvfølgelig kan man ikke det, jo man kan efter en typecast.

Som jeg har sagt før 'Og nej der findes ikke nogle standard metoder til det'

Læs lige hvad .toString() egentligt er beregnet til:
Returns a string representation of the object. In general, the toString method returns a string that "textually represents" this object. The result should be a concise but informative representation that is easy for a person to read. It is recommended that all subclasses override this method.
The toString method for class Object returns a string consisting of the name of the class of which the object is an instance, the at-sign character `@', and the unsigned hexadecimal representation of the hash code of the object. In other words, this method returns a string equal to the value of:

getClass().getName() + '@' + Integer.toHexString(hashCode())

Returns:
a string representation of the object.


Selvfølgelig bruger jeg eksisterende metoder, men jeg laver dem også når de mangler hvilket er tilfældet i dette spørgsmål.


Lige får at slå svaret helt fast 'Nej den findes ikke som standard, du må selv lave den'
Avatar billede mr_mudderkode Nybegynder
16. juli 2002 - 10:00 #11
Lukker
Avatar billede disky Nybegynder
16. juli 2002 - 10:02 #12
flot virkeligt flot.

Du stiller et spørgsmål, du for indtil flere svar der kan bruges, og så tager du selv point.
Avatar billede mr_mudderkode Nybegynder
16. juli 2002 - 10:18 #13
Forkert.

Jeg gjorde allerede helt i toppen opmærksom på at jeg i forvejen gjorde brug af en en løkke der kørte igennem arrayet...

strArr[i] = objArr[i].toString()

Det svar du smed var præcis det samme.

Derudover svarer du blot "Det kan man ikke" og så er der noget debat om hvorvidt man bør typecaste.
Avatar billede disky Nybegynder
16. juli 2002 - 10:23 #14
Du skulle tage og læse,

du spørger om:
Er der nogen der kender til en elegant måde at konvertere et Object[] af ....

Jeg kommer så med en elegant løsning nemlig brug af typecast, du brokker dig så over du ikke kan lide typecast osv.
Jeg fortæller dig så må du skifte sprog, og har siden nu 3 gange sagt:

'Nej den findes ikke som standard, du må selv lave den'

Så kort fortalt, det korrekt svar på dit spørgmål er 'Nej'¨

p.s. Med din attitude skal du ikke forvente hjælp i fremtiden, vi er mange der ikke gider spille tid på folk som ikke kan klare de korrekte svar og beholder point selv.

EOD
Avatar billede mr_mudderkode Nybegynder
16. juli 2002 - 10:33 #15
Lige inden du tager og puster dig op...

Jeg gør opmærksom på hvad jeg sagtens selv kan finde ud af: At løbe igennem en løkke, og lave .toString på hvert indlæg.

Jeg udlover point til dem der kan komme med en kønnere løsning. Det leverer du ikke.

Nu drejer det sig kun om 30 point. Lad os blæse sagen lidt op, og sige det var en sag. "Jeg udlover 300 point til en der kan lave sådan en dippedut til mig i Flash". Der bliver smidt et svar "Det kan man ikke". Skal jeg slippe de 300 point? Nej!

I det store hele er jeg ikke den der sidder hårdt på pointene. Det har du også selv haft glæde af:

http://www.eksperten.dk/spm/234493
Du fik pointene for arbejdet...

http://www.eksperten.dk/spm/233608
Du får pointene selv om dit svar egentlig er ved siden af

Jeg har IKKE fået noget svar til dette spørgsmål, og derfor lukker jeg nu fordi det får jeg nok heller ikke.

Al respekt for de svar du smider her på eksperten.dk, men bare fordi jeg "kun" har få point, betyder ikke at du automatisk har ret!

Tag dog lige og fald ned på jorden!

EOD
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester