17. december 2003 - 19:07Der er
4 kommentarer og 1 løsning
Søgninger i en vector
Jeg har problemer med at læse API'en og forstå hvad de forskellige ting betyder.
Jeg sidder og roder med metoder til en vector. Jeg vil gerne være i stand til at søge de objekter frem som jeg har gemt i den uden at vide på hvilken plads de ligger. Jeg vil gerne være i stand til at søge på en given parameter/argument i objektet, eks. navn eller pris.
Jeg har fundet frem til at denne metode er den eneste der kommer nær løsningen af mit mål:
indexOf(Object elem) Searches for the first occurence of the given argument, testing for equality using the equals method.
Problemet er at jeg ikke kan finde ud af hvordan jeg omsætter dette til kode i mit projekt. Hvad er elem? Og har det nogen betydning at der står init som type (?) foran metoden?
Hvis dette ikke er måden jeg søger i en vector, hvordan gør jeg så?
ja, det kan godt være lidt forvirrende at læse i api'en men det kommer hurtigt.
det at der står int foran betyder blot at metoden returnerer en int...dvs en talværdi. Hvis du kigger i detaljerne for metoden står der følgende
the index of the first occurrence of the argument in this vector, that is, the smallest value k such that elem.equals(elementData[k]) is true; returns -1 if the object is not found
dvs. hvis den finder objektet på index 3 returnerer metoden 3
elem er blot en identifier...det skal du ikke bekymre dig om
når du definerer en metode er der et rimeligt fast format:
art returtype metodenavn( parametertype parameter ) { // javakode om hvad metoden skal gøre med den parameter for at generere // en værdi af typen returtype den kan returnere. }
'art' kan være 'public' eller 'private' eller adskilligt andet, det kan sågar være 2 ord (fx: 'private static')
'returtype' er navnet på den slags data der returneres af den metode, osv osv
i din linie indexOf(Object elem) er 'elem' navnet på den parameter der skal gives, og 'Object' et parameterns type. 'Object' benyttes of for 'det kan være hvadsomhelst' fordi enhver instand af hvilkensomhelst klasse er et Objekt.
Det er også det der bruges i klassen Vector. Når vi gemmer en String i vores vektor caster vi den lige så add-funktionen in Vector får at vide at den skal behandles som 'bare et objekt'. vect.addElement( (Object)"din string verdi" ); når vi så piller den ud igen må så også se i øjnene at det er alt hvad vi ved: Object x = vect.elementAt( 5 ); Vi ved ikke rigtig om det var den String værd, eller måske et helt anderleds objekt der er blivet sat ind i den vector. Men vi kan finde ud af det: if ( x.getClass().getName().equals( "String" ) ) { // nu ved vi x er af typen String og bruge den som en strinværdi String x_resolved = (String)x; int hvor = x_resolved.indexOf( "noget vi vil finde i strenge" ); } else // vi ved stadig ikke hvad for en slags object X egentlig er
mvh JakobA
Synes godt om
Ny brugerNybegynder
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.