30. marts 2008 - 18:21Der er
9 kommentarer og 2 løsninger
Søgning i ArrayList
Jeg har et lille problem som jeg selv har siddet og bikset rundt med i meget lang tid, uden held.
Jeg skal foretage en søgning i min arraylist hvor jeg skal kunne finde en tidligere indtastet oplysning, og på baggrund af denne, udskrive de andre oplysninger der er tilknyttet denne oplysning.
Det om handler nogle medarbejdere der har et navn et nr og andre oplysninger, ved søgning på nr. skal navnet og de andre oplysninger printes ud.
Håber på at få noget hjælp, da jeg efterhånden har brugt RIGTIG mange timer på at finde en løsning!
Okay, nu har jeg set lidt nærmere på det. Jeg må indrømme, at jeg faldt lidt af da jeg så @Override og hashCode - det er jeg ikke kommet til endnu - har kun læst til datamatiker i 2 mdr.
Så enten, hvis du vil uddybe lidt, eller også så må jeg bare prøve at læse lidt frem i bogen ;)
@Override kan du ignorere - det informerer bare compileren om at det her en metode som Medarbejder klassen overrider den metode der finde i Object klassen (som Medarbejder arver fra).
toString gør at man kan udskrive instanser af Medarbejder.
equals gør at ArrayList .indexOf metoden kan finde en instans.
hashCode skal man bare have når man har en equals.
compareTo gør at Collections .sort kan sortere rigtigt.
Okay, mange tak, jeg vil forsøge mig frem - det er bare et lidt større system bygget op over 7 klasser, så skal lige eksperimentere lidt. Vender tilbage når jeg har fået afprøvet det, tak!
synes måske det er lidt overkill at indblande comparable hashcode når du ikke er nået til det stadie endnu hvor man ikke fokuserer på hvordan tingene gøres mest rigtigt..
her er et lille eks.. ved ikke om det er noget i den stil? ikke en særlig effektiv måde at gøre det på, men hvad du har lært indtil videre går jeg udfra at det skal gøres sådan?
import java.util.*;
public class EmpList { private List<Emp> empList;
public EmpList() { empList = new ArrayList<Emp>(); }
public void addEmp(String f, String l, int p) { empList.add(new Emp(f,l,p)); }
public boolean searchNr(int p) { for( Emp e : empList) { if(e.phonenr==p) return true; } return false; }
public boolean searchFirstName(String n) { for( Emp e : empList) { if(e.fname.equalsIgnoreCase(n)) return true; } return false; }
public void printEmpList() { for(Emp e : empList) { System.out.println(e); } }
// inner class class Emp { public String fname; public String lname; public int phonenr;
public Emp(String f, String l, int p) { fname = f; lname = l; phonenr = p; }
Mit argument er at man bør bruge de indbyggede indexOf og contains metoder i ArrayList<> og at man så må bide i det sure æble og lære om equals (og hashCode) med det samme.
Men jeg er formentlig ikke den bedst kvalificerede til at vurdere hvad der er den bedste rækkefølge at lære den slags.
Tak til jer begge to, og jeg beklager at der er gået så længe inden mit svar, men jeg har været lidt hængt op på det seneste. Jeg fik løst mit problem med hjælp fra arne_v's eksempel, kombineret med lidt vejledning i skolen..
Er ny på siden - hvordan er det jeg deler pointne ud?
Forresten, hvis nogen skulle have interesse, så blev min løsning som følger:
public String søgLærer(int medarbjNr) { String resultat = null; int tæller = 0;
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.