import java.util.ArrayList; import java.util.Iterator; /** * Oversikt over alle studenter * * @author 1/2geir * @version 002; Med Iterator */ public class Uia { private ArrayList studenter; /** * Constructor for objects of class UiA */ public Uia() { studenter = new ArrayList(); } /** * Legger til en student, inn i Arraylista * * @param nyStudent legger et eksisterende Student objekt inn i Arraylista studenter */ public void addStudent(Student nyStudent) { studenter.add(nyStudent); } /** * Print details of all the students */ public void printStudents() { System.out.println("ALL STUDENTS"); for(Student enStudent : studenter) { enStudent.skrivStudent(); System.out.println("======================================================="); // HN: Kunne denne vært i klassen Book? } System.out.println(); } /** * Print details of all the students, using an Iterator * Arraylist har en iterator() metode som returnerer ett Iterator objekt * Iterator brukes for å gå gjennom ei liste, sikrer at vi går gjennom alle */ public void printStudentsWithIterator() { Iterator studListe; // oppretter Iterator variabel studListe = studenter.iterator(); // iteratoren settes lik Iterator objektet som returneres fra Arraylista studenter System.out.println("ALL STUDENTS"); while (studListe.hasNext()) { Student enStudent = studListe.next(); enStudent.skrivStudent(); System.out.println("======================================================="); // HN: Kunne denne vært i klassen Book? } System.out.println(); } /** * Skal finne en student, den lik "navn" * Finner den første, og avslutter * @return returnerer studenten, hvis den finnes, null hvis ikke * @param navn Navnet vi søker etter * * 1: Gå gjennom lista * 2: For hver: * - sjekk studentens navn mot parameteren navn * - hvis funn; returner denne studenten * - hvis ikke funn; søk videre */ public Student finnStudent(String navn) { for (Student loper :studenter) { if (navn.equals(loper.getForNavn())) return loper; } // Gått gjennom lista, ikke funn return null; } /** * Metoden skal finne antall studenter som har oppgitt navn * og returnere antallet * 1: Gå gjennom HELE lista, for hver: * - sjekk om navn er det vi søker, hvis likt oppdater teller * */ public int finnAntallNavn(String navn) { int antall = 0; for (Student loper : studenter) { String studentNavn; studentNavn = loper.getForNavn(); if (studentNavn.equals(navn)) { antall++; } } return antall; } public int finnAntallNavnMedWhile(String navn) { int antall = 0; int i = 0; // indexen i lista vi ser på nå int size; // størrelsen på lista, dvs antall studenter size = studenter.size(); while (i < size) { String studentNavn; Student enStudent; enStudent = studenter.get(i); studentNavn = enStudent.getForNavn(); if (studentNavn.equals(navn)) { antall++; } i++; } return antall; } /** * Kun for testformål, oppretter numStudents objekter, og legger hver av dem * inn i Arraylist studenter * @param numStudents antall studenter som skal opprettes * */ public void addTestData(int numStudents) { // student String forNavn; String etterNavn; String mobilNr; int studentNummer; Student nyStudent; // adresse String gate; int husNr; String oppgang; String postNr; String postSted; Adresse nyAdresse; int runner = 0; while (runner < numStudents) { //student forNavn = "Kurt" + runner; etterNavn = "Oddekalv" + runner; mobilNr = "+47123456" + runner; studentNummer = runner; // alle data for en adresse gate = "Gimleveien " + runner; husNr = runner; oppgang = "Oppgang " + runner; postNr = "34" + runner; postSted = "Volda" + runner; nyStudent = new Student(forNavn, etterNavn,mobilNr,studentNummer); nyAdresse = new Adresse(gate,husNr,oppgang, postNr, postSted); nyStudent.setAdresse(nyAdresse); addStudent(nyStudent); runner++; } } }