import java.io.Serializable;
import java.util.HashMap;
import java.io.File;
import java.io.FileInputStream;
import java.io.ObjectInputStream;
import java.io.FileOutputStream;
import java.io.ObjectOutputStream;
import java.io.IOException;
import java.util.LinkedList;
import java.util.Collections;
public class PhoneBook implements Serializable {
public void addEntry(BookEntry entry) {
hash.put(entry.getPerson(),entry);
}
public BookEntry getEntry(Person key) {
return hash.get(key);
}
public PhoneNumber getNumber(Person key) {
return getEntry(key).getNumber();
}
public void listEntries() {
LinkedList<BookEntry> entries=new LinkedList<BookEntry>(hash.values());
Collections.sort(entries);
for(BookEntry entry:entries) {
System.out.println(entry);
}
}
public PhoneBook() {
if(filename.exists())
try {
ObjectInputStream in = new ObjectInputStream(new FileInputStream(filename));
hash=(HashMap<Person,BookEntry>)in.readObject();
in.close();
} catch(ClassNotFoundException e) {
e.printStackTrace();
System.exit(1);
} catch(IOException e) {
e.printStackTrace();
System.exit(1);
}
}
public void save() {
try {
System.out.println("保存电话簿");
ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(filename));
out.writeObject(hash);
System.out.println("保存成功!");
out.close();
} catch(IOException e) {
e.printStackTrace();
System.exit(1);
}
}
private File filename= new File("PhoneBook.bin");
private HashMap<Person,BookEntry> hash=new HashMap<Person,BookEntry>();
}