推荐使用ArrayList实现动态通讯录,因其底层基于数组且自动扩容,支持便捷的增删查操作;Contact类封装姓名、电话、邮箱字段,主程序提供菜单式交互功能。

用Java实现一个简单通讯录,核心是合理选择数据结构来管理联系人信息。数组适合固定人数场景,集合(如ArrayList)更灵活,支持动态增删。下面从设计、实现到操作,一步步讲清楚。
通讯录的数据结构设计
每个联系人至少包含姓名、电话、邮箱等字段,建议封装为独立类:
class Contact {
private String name;
private String phone;
private String email;
public Contact(String name, String phone, String email) {
this.name = name;
this.phone = phone;
this.email = email;
}
// getter 方法略(实际开发中需补全)
public String getName() { return name; }
public String getPhone() { return phone; }
public String getEmail() { return email; }
@Override
public String toString() {
return String.format("姓名:%s,电话:%s,邮箱:%s", name, phone, email);
}
}
用ArrayList实现动态通讯录
推荐使用ArrayList——它底层基于数组,但自动扩容,增删查都方便,适合真实通讯录需求:
- 初始化:ContactList contactList = new ArrayList();
- 添加联系人:contactList.add(new Contact("张三", "13800138000", "zhangsan@xxx.com"));
- 按姓名查找:遍历或用stream过滤,例如
contactList.stream().filter(c -> c.getName().equals("张三")).findFirst().ifPresent(System.out::println); - 删除联系人:contactList.removeIf(c -> c.getName().equals("李四"));
用数组实现基础通讯录(适合教学演示)
若限定最多存10个联系人,可用Contact[]数组:
立即学习“Java免费学习笔记(深入)”;
- 声明并初始化:Contact[] contacts = new Contact[10];
- 添加时需手动维护下标(如int size = 0),插入前判断是否已满
- 查找/删除需循环遍历,删除后还要手动移动元素填补空位,代码较冗长
- 优点是结构直观,有助于理解内存和索引概念;缺点是容量固定、操作易出错
基础功能整合示例(控制台交互)
主程序可提供菜单式操作,比如:
- 1. 添加联系人
- 2. 查看所有联系人
- 3. 按姓名搜索
- 4. 删除联系人
- 0. 退出
每次操作对应调用ArrayList的add()、forEach()、stream().filter()、removeIf()等方法。注意输入校验(如手机号格式)、空列表提示、重复姓名处理等细节,会让程序更健壮。










