1)创建集合,添加5个联系人,联系人姓名不能重复 2)用户选择1 查看联系人,2 添加联系人 3 删除联系人 4 修改联系人 5查看分组联系人 6查看所有联系人0退出通讯录

需求

联系人Contacts(姓名name,电话mobile,邮箱email,QQ,分组group)
1)创建集合,添加5个联系人,联系人姓名不能重复
2)用户选择1 查看联系人,2 添加联系人 3 删除联系人 4 修改联系人 5查看分组联系人 6查看所有联系人0退出通讯录
3)选择1查看联系人时,输入联系人姓名,根据联系人姓名查看到联系人的信息
4)选择2添加联系人时,从控制台读取姓名、电话、邮箱、QQ、分组(如家人、同事、同 学、朋友)
5)选择3删除联系人,输入联系人姓名,删除该联系人信息
6)选择4修改联系人,输入联系人姓名,如果联系人姓名不存在,则不能修改
7)实现5按分组查询联系人,输入分组名,查看该分组下所有联系人
8)实现添加分组,如果添加联系人时该分组不存在,则创建新分组

代码

联系人类

/*联系人类
 *属性:姓名 电话 邮箱 qq 分组
 */
public class Contacts {
	private String name;
	private String mobile;
	private String email;
	private String qq;
	private String group;
	public Contacts() {
		
	}
	public Contacts(String name, String mobile, String email, String qq, String group) {
		super();
		this.name = name;
		this.mobile = mobile;
		this.email = email;
		this.qq = qq;
		this.group = group;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getMobile() {
		return mobile;
	}
	public void setMobile(String mobile) {
		this.mobile = mobile;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public String getQq() {
		return qq;
	}
	public void setQq(String qq) {
		this.qq = qq;
	}
	public String getGroup() {
		return group;
	}
	public void setGroup(String group) {
		this.group = group;
	}
	@Override
	public String toString() {
		return "Contacts [name=" + name + ", mobile=" + mobile + ", email=" + email + ", qq=" + qq + ", group=" + group
				+ "]";
	}
	
	
}

 主界面类

import java.security.acl.Group;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Scanner;

import javax.naming.spi.NamingManager;



/*通讯录主界面类
 *功能:
 *	1 查看联系人
 *	2 添加联系人 
 *	3 删除联系人
 *	4 修改联系人
 *	5查看分组联系人
 *	6查看所有联系人
 *	0退出通讯录 
 */
public class MainUi {
	// 定义全局的两个集合变量
	Map<String, Contacts> contactMap;// 联系人集合
	// 一个分组下面有多个联系人,所以使用list作为value值
	Map<String, List<Contacts>> contactGroup;// 分组集合
	// 构造方法

	public MainUi() {
		// 实例化联系人集合
		contactMap = new HashMap<>();
		// 实例化分组集合
		contactGroup = new HashMap<>();
		// 调用初始化界面的方法
		initUi();
	}

	// 初始化界面的方法
	private void initUi() {
		// 先初始化及格联系人集合
		initFiveContacts();
		System.out.println("============================欢迎使用Contacts管理系统=========================");
		System.out.println();
		// while循环系统一直可以操作
		while (true) {
			System.out.print("1:查看联系人 " + "  ");
			System.out.print("2:添加联系人 " + "  ");
			System.out.print("3:删除联系人 " + "  ");
			System.out.print("4:修改联系人 " + "  ");
			System.out.print("5:查看分组联系人" + "  ");
			System.out.print("6:查看所有联系人" + "  ");
			System.out.println("0:退出");
			System.out.println();
			System.out.println("请选择你要执行的操作");
			// 匿名类创建键盘输入对象 ,获取键盘输入
			String input = new Scanner(System.in).next();
			switch (input) {
			case "1":
				// 调用查看联系人方法
				System.out.println("*****************************查看联系人******************************");
				searchContacts();
				System.out.println("================================================");
				break;
			case "2":
				// 调用添加联系人方法
				System.out.println("*****************************添加联系人*****************************");
				addOrUpdateContacts("add");// false代表里面没有此联系人才能添加,
				System.out.println("====================================================================");
				break;
			case "3":
				// 调用删除联系人方法
				System.out.println("*****************************删除联系人*****************************");
				deleteContacts();
				System.out.println("====================================================================");
				break;
			case "4":
				// 调用修改联系人方法
				System.out.println("******************************修改联系人******************************");
				addOrUpdateContacts("update");// true代表里面存在联系人
				System.out.println("====================================================================");
				break;
			case "5":
				// 调用查看分组联系人方法
				System.out.println("******************************查看分组联系人******************************");
				searchContactsByGroup();
				System.out.println("====================================================================");
				break;
			case "6":
				// 调用查看分组联系人方法
				System.out.println("******************************查看所有联系人******************************");
				searchAllContacts();
				System.out.println("====================================================================");
				break;
			case "0":
				System.out.println("******************************欢迎下次使用,再见!*************************");
				return;
			default:
				System.out.println("!!!!!!!!!!!!!!!输入序号有误,重新选择!!!!!!!!!!!!!!!!");
				break;
			}
		}
	}

	// 初始化几个联系人对象
	private void initFiveContacts() {
		// 添加到联系人集合
		contactMap.put("张三", new Contacts("张三", "123456", "1234@qq.com", "12312", "家人"));
		contactMap.put("李四", new Contacts("李四", "34534", "8765@qq.com", "9876", "同事"));
		contactMap.put("李三", new Contacts("李三", "3456", "1234@qq.com", "12312", "朋友"));
		contactMap.put("张四", new Contacts("张四", "75", "456@qq.com", "4566", "同事"));
		contactMap.put("王三", new Contacts("王三", "23456", "3456@qq.com", "14562", "家人"));
		// 添加到分组集合
		contactGroup.put("朋友", new ArrayList<Contacts>());
		contactGroup.put("同事", new ArrayList<Contacts>());
		contactGroup.put("同事", new ArrayList<Contacts>());
		contactGroup.put("家人", new ArrayList<Contacts>());
		contactGroup.put("家人", new ArrayList<Contacts>());

		contactGroup.get("朋友").add(contactMap.get("李三"));
		contactGroup.get("同事").add(contactMap.get("张四"));
		contactGroup.get("同事").add(contactMap.get("李四"));
		contactGroup.get("家人").add(contactMap.get("张三"));
		contactGroup.get("家人").add(contactMap.get("王三"));
	}

	// 查看联系人
	public void searchContacts() {
		System.out.println("输入要查询的联系人姓名");
		String name = new Scanner(System.in).nextLine();
		if (contactMap.containsKey(name)) {
			System.out.println(contactMap.get(name));
		} else {
			System.out.println("没有此联系人");
		}
	}

	// 添加或者修改联系人
	public void addOrUpdateContacts(String type) {
		Scanner sc = new Scanner(System.in);
		do {
			System.out.println("请输入姓名");
			String name = sc.nextLine();
			// 如果是添加操作, 并且map中有联系人,就不能添加
			if ("add".equals(type) && contactMap.containsKey(name)) {
				System.out.println("已经有此联系人");
				continue;
			}
			// 如果是修改操作,并且map中没有联系人,就不能修改
			if ("update".equals(type) && !contactMap.containsKey(name)) {
				System.out.println("没有此联系人");
				break;//直接跳出
			}
			Contacts contact = new Contacts();
			contact.setName(name);
			System.out.println("请输入电话");
			contact.setMobile(sc.nextLine());
			System.out.println("请输入email");
			contact.setEmail(sc.nextLine());
			System.out.println("请输入QQ");
			contact.setQq(sc.nextLine());
			System.out.println("请输入分组");
			String group = sc.nextLine();
			contact.setGroup(group);
			contactMap.put(contact.getName(), contact);
			if (!contactGroup.containsKey(group)) {// 当分组不存在时,新建分组
				contactGroup.put(group, new ArrayList<Contacts>());
			}
			contactGroup.get(group).add(contact);// 将联系人添加到分组
			System.out.println("成功");
			return;
		} while (true);
	}

	// 删除联系人
	public void deleteContacts() {
		System.out.println("输入你删除的联系人姓名");
		String name = new Scanner(System.in).nextLine();
		if(contactMap.containsKey(name)) {
			contactMap.remove(name);
		}else {
			System.out.println("没有此联系人的信息!");
		}
	}

	// 查看所有联系人
	public void searchAllContacts() {
		for (String key : contactMap.keySet()) {
			System.out.println(contactMap.get(key));
		}
	}

	// 查看分组联系人
	public void searchContactsByGroup() {
		System.out.println("输入要查看的分组");
		String group = new Scanner(System.in).nextLine();
		if(!contactGroup.containsKey(group)){
			System.out.println("不存在这个分组");
		}else {
			List<Contacts> list = contactGroup.get(group);
			for(Contacts c:list) {
				System.out.println(c);
			}
		}
	}

}

 运行类

/*测试类
 *功能:
 *	调用主界面窗口,用来启动通讯录
 */
public class Test {
	public static void main(String[] args) {
		MainUi mainui = new MainUi();
	}
}