Avatar billede fenjas Nybegynder
17. december 2003 - 19:07 Der 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å?
Avatar billede simonvalter Praktikant
17. december 2003 - 19:12 #1
du kan gøre sådan her

for (int i = 0;i < vector.size();i++){
Vare v = (Vare) vector.elementAt(i);
System.out.println(v.getPris());
}
Avatar billede riversen Nybegynder
17. december 2003 - 19:13 #2
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
Avatar billede simonvalter Praktikant
17. december 2003 - 19:16 #3
så kan du søge feks søge efter varenr som du har givet med som parameter i din metode.

if (v.getNr() == nr){
return v;
}
Avatar billede simonvalter Praktikant
17. december 2003 - 19:18 #4
skal du så retunere en vare vil det være
public Vare getVare(int nr){ /*metode*/ }

antal vare kunne være

public int getAntalVare(){
return v.size();
}
Avatar billede jakoba Nybegynder
17. december 2003 - 19:31 #5
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
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