java数据结构的运用:通讯录

做一个通讯录,首字母作为key,所有以这个字母开头的用户作为value,然后实现添加用户操作

思路:

(1)一个通讯录为一个键值对结构,但是一对多,则value可设计为数组或结构,即每个字母对应一个数组

Map<String, ArrayList<Object>> contacts = new HashMap<String, ArrayList<Object>>();

(2)数组结构中存放多个用户

代码实现:
user用户类:
public class User {
	String name;
	String phone;
	String address;
	//将人的信息,放入一个字典
	Map<String, String> getUserInfo() {
		Map<String, String> userInfo = new HashMap<String, String>();
		userInfo.put("name", this.name);
		userInfo.put("phone", this.phone);
		userInfo.put("address", this.address);
		return userInfo;
	}
}
Phonebook电话本类:
public class PhoneBook {

	// 表示所有联系人数组是通讯录对象的属性
	Map<String, ArrayList<Object>> contacts = new HashMap<String, ArrayList<Object>>();

	// 构造通讯录的整体结构:每个字母对应一个数组:
	void setContacts() {
		for (char ch = 'A'; ch <= 'Z'; ch++) {
			// 为什么名字可以一样
			ArrayList<Object> users = new ArrayList<Object>();
			this.contacts.put(ch + "", users);
		}
	}

	// 添加一个用户
	void addUser(User user) {
		// 先求key
		String firstChar = user.name.substring(0, 1).toUpperCase();// 取出我名字的首字母
		// 再存进去:存到哪个集合
		ArrayList<Object> userChar = this.contacts.get(firstChar);// 首字母对应的小组
		userChar.add(user.getUserInfo());
	}

}

Main主函数操作类:
public static void main(String[] args) {
		PhoneBook book = new PhoneBook();
		book.setContacts();//创建电话本结构
		
		//一个用户
		User user = new User();
		user.name = "xm";
		user.phone = "18888";
		user.address = "sichuan";
		
		//添加一个用户
		book.addUser(user);
		
		User user1 = new User();
		user1.name = "Tom";
		user1.phone = "1111";
		user1.address = "sichuan";
		book.addUser(user1);
		
		//得出结果
		System.out.println(book.contacts);
	}
  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
第一个模块——主函数main()的功能是:根据选单的选项调用各函数,并完成相应的功能。 
   第二个模块——Menu()的功能是:显示提示选单。 
   第三个模块——Quit()的功能是:退出选单。 
   第四个模块——Create()的功能是:创建新的数据记录。 
   第五个模块——Add()的功能是:增加新的数据记录,并返回选单。 
   第六个模块——Find()的功能是:按要求查询相关的信息,如果找到了,则显示该信息,如果未找到,则提示文件中没有该信息,并返回选单。 
   第七个模块——Alter()[的功能是:修改某条记录的信息,如果未找到要修改的记录,则提示系统中无此记录,并返回选单。 
   第八个模块——Delete()的功能是:删除某条记录,如果未找到要删除的记录,则提示通讯录中没有,并返回选单。 
   第九个模块——List()的功能是:显示所有记录。 一、用链表或者顺序表实现以下系统,完成线性表的建立(至少包括10个结点),以及线性表中信息(结点)的插入、查找、删除、修改、输出等操作,具体的模块要求见上方的“总的模块要求”。建议用“文件”存储数据。 1.通讯录管理系统的设计与实现 (1)通讯者信息包括:编号(char num[10])、姓名(char name[10])、性别(char sex[10])、电话(char phone[20]) (2)除了总的模块要求外,还需统计通讯录中男性人数及女性人数,并求出通讯录中的第一个模块——主函数main()的功能是:根据选单的选项调用各函数,并完成相应的功能。 
   第二个模块——Menu()的功能是:显示提示选单。 
   第三个模块——Quit()的功能是:退出选单。 
   第四个模块——Create()的功能是:创建新的数据记录。 
   第五个模块——Add()的功能是:增加新的数据记录,并返回选单。 
   第六个模块——Find()的功能是:按要求查询相关的信息,如果找到了,则显示该信息,如果未找到,则提示文件中没有该信息,并返回选单。 
   第七个模块——Alter()[的功能是:修改某条记录的信息,如果未找到要修改的记录,则提示系统中无此记录,并返回选单。 
   第八个模块——Delete()的功能是:删除某条记录,如果未找到要删除的记录,则提示通讯录中没有,并返回选单。 
   第九个模块——List()的功能是:显示所有记录。 一、用链表或者顺序表实现以下系统,完成线性表的建立(至少包括10个结点),以及线性表中信息(结点)的插入、查找、删除、修改、输出等操作,具体的模块要求见上方的“总的模块要求”。建议用“文件”存储数据。 1.通讯录管理系统的设计与实现 (1)通讯者信息包括:编号(char num[10])、姓名(char name[10])、性别(char sex[10])、电话(char phone[20]) (2)除了总的模块要求外,还需统计通讯录中男性人数及女性人数,并求出通讯录中的男女比例。 男女比例。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值