试编写合适的类Ebook,实现一个电话通讯录,内含姓名和电话号码成员,可以按姓名拼音顺序将通讯录排序
时间: 2024-10-29 22:17:03 浏览: 10
为了实现一个电话通讯录功能,我们可以创建一个名为`Ebook`的类,其中包含姓名(Name)和电话号码(PhoneNumber),并实现一个排序功能。这里我们假设姓名是以拼音形式存储的。首先,我们需要一个`PinyinComparator`类来进行拼音排序。以下是这个类的一个基本设计:
```java
import java.util.*;
class PinyinComparator implements Comparator<String> {
@Override
public int compare(String name1, String name2) {
// 这里只是一个简单的例子,实际需要更复杂的拼音处理库来准确比较
return name1.toUpperCase().compareTo(name2.toUpperCase());
}
}
class Ebook {
private Map<String, String> contactList = new HashMap<>();
// 添加联系人方法
void addContact(String name, String phoneNumber) {
if (!contactList.containsKey(name)) {
contactList.put(name, phoneNumber);
} else {
System.out.println("Contact with name " + name + " already exists.");
}
}
// 按拼音排序并打印联系方式方法
void printContacts() {
List<Map.Entry<String, String>> sortedEntries = new ArrayList<>(contactList.entrySet());
Collections.sort(sortedEntries, new PinyinComparator());
for (Map.Entry<String, String> entry : sortedEntries) {
System.out.println("Name: " + entry.getKey() + ", Phone Number: " + entry.getValue());
}
}
}
```
使用示例:
```java
public static void main(String[] args) {
Ebook ebook = new Ebook();
ebook.addContact("张三", "12345678");
ebook.addContact("李四", "98765432");
ebook.addContact("王五", "01234567");
ebook.printContacts();
}
```
阅读全文