Zurück zum Manuskript
// Datei: Telefonbuch.java // Autor: Brecht // Datum: 23.07.2018 // Thema: Dieses Telefonbuch ist strukturell identisch mit dem // der beiden ersten Aufgaben. Die Liste tBuch wurde so // gestaltet, dass sie wahlweise (je nach Parameter) // für die Abteilung Einkauf oder die Abteilung Vertrieb // verwendet werden kann. // ============================================================= import java.util.*; class Telefonbuch { ArrayList<String> tBuch = new ArrayList<String>(); ArrayList<String> suErgNa = new ArrayList<String>(); ArrayList<String> suErgNu = new ArrayList<String>(); // Telefonbuch wählen // ----------------------------------------------------------- Telefonbuch(String abteilung) { // tBuch abteilungsbezogen belegen // --------------------------------------------------------- if(abteilung.equals("Einkauf")) { tBuch.add( "Meier&4711" ); tBuch.add( "von Ulm&4815" ); tBuch.add( "Müller&4711" ); tBuch.add( "Meier&4816" ); tBuch.add( "Schmitt&4712" ); tBuch.add( "Meier&4713" ); tBuch.add( "Huber&4711" ); } else { tBuch.add( "Schulze&2813" ); tBuch.add( "Huber&2742" ); tBuch.add( "Müller&2743" ); tBuch.add( "Schulze&2394" ); tBuch.add( "Schmitt&2813" ); tBuch.add( "Meier&2441" ); tBuch.add( "Schmitt&2813" ); } } // Suche im Telefonbuch // ----------------------------------------------------------- ArrayList<String> tBuchSuche(String pkqs) { ArrayList<String> treffer = new ArrayList<String>(); int len = tBuch.size(); String zeile = null; for(int i=0; i<len; i++) { zeile = tBuch.get(i); if(pkqs.endsWith("&")) { if(zeile.startsWith(pkqs)) treffer.add(zeile); } else { if(zeile.endsWith(pkqs)) treffer.add(zeile); } } return treffer; } // basisSuche() // Nebenläufige Suche mit Threads, die tBuchSuche() // ausführen // Parameter ist ein korrekt aufgebauter Query String // ----------------------------------------------------------- ArrayList<String> tBuchAbfrage(String kqs) throws Exception { // SuchThreads als lokale Klasse // --------------------------------------------------------- class SuchThread extends Thread { String pkqs = null; SuchThread(String pkqs) { this.pkqs = pkqs; } public void run() { if(pkqs.endsWith("&")) { Telefonbuch.this.suErgNa = Telefonbuch.this.tBuchSuche(pkqs); } else { Telefonbuch.this.suErgNu = Telefonbuch.this.tBuchSuche(pkqs); } } } // local class // Query String hat die Form: *& oder &* oder *&* // --------------------------------------------------------- String name = null; String nummer = null; if(kqs.endsWith("&")) { SuchThread st = new SuchThread(kqs); st.start(); st.join(); return suErgNa; } if(kqs.startsWith("&")) { SuchThread st = new SuchThread(kqs); st.start(); st.join(); return suErgNu; } String[] token = kqs.split("&"); name = token[0]+"&"; nummer = "&" + token[1]; SuchThread st1 = new SuchThread(name); SuchThread st2 = new SuchThread(nummer); st1.start(); st2.start(); st1.join(); st2.join(); int len = suErgNu.size(); for(int i=0; i<len; i++) suErgNa.add(suErgNu.get(i)); return suErgNa; } // nebenSuche() } // class

Zurück zum Manuskript