2012-03-29 19 views
4

Ich habe ein Telefonrechnungssystem gemacht nimmt die Eingabe von Telefonnummer genannt, Datum des Anrufs und Anrufdauer. Es speichert es in einer Textdatei. Was ich nicht konnte, ist die Textdatei nach der Telefonnummer zu durchsuchen.Java suchen Sie eine Textdatei

My coding

+0

und wo ist die Frage? –

+1

Es sieht so aus, als könnten Sie die Datei einlesen. Erstellen Sie also eine Liste von Aufrufobjekten und fügen Sie sie in eine Liste von Telefonnummern zur Liste der Aufrufe ein. Suchen Sie dann in der Karte nach einer Nummer. – Thomas

Antwort

4

tun nur lineare Suche (über Ihre Telefonliste iterieren):

public static List<Phone> searchPhone(final String phoneNumber, final List<Phone> phoneList) { 
    List<Phone> matchedPhone = new ArrayList<Phone>(); 

    for(Phone phone: phoneList) { 
     if (phone.getphoneNumber().equals(phoneNumber)) { 
      matchedPhone.add(phone); 
     } 
    } 

    return matchedPhone; 
} 

auch zur besseren Lesbarkeit, nicht als Ausgabe machen Ihre Methodenparameter. seine nicht gute Praxis, so dass Sie Ihre Methode ändern sollte:

static void readList(List<Phone> phoneListIn) { 
} 

zu:

static List<Phone> readList(final String fileName) { 
    } 

Ausgabeargumente sollten wie möglich vermieden werden, da Sie können

+0

für (Telefon, Telefonliste); kommt mit einem Fehler für die Zeile, die ";" erwartet. Obwohl es es schon hat. –

+0

Entschuldigung, ich benutze unterschiedliche Syntax für foreach-Schleife (das ist Qt-sytanx), ich aktualisierte die Antwort jetzt, können Sie foreach-Schleife oder normale Schleife verwenden. für (int i = 0; i

2

Collections.sort(List list); Perform

Dann Führen Sie Collections.binarySearch(List list, Object key). Dies sollte die Suche effizient erreichen.