Java序谈之通讯录制作

需求:

输入联系人:姓名 年龄 性别 地址 电话

通讯录管理类:

1、添加练习人信息

2、根据分组查找联系人 并针对姓名进行排序

例如 传入B分组 查找出 B分组下 姓名首字母是B的所有联系人
 3、根据电话输出联系人信息

 4、根据性别查找该性别的所有联系人 并且按照年龄降序排序

 5、根据姓名删除某个联系人

 6、删除某个分区的所有联系人 传入B 把姓B的全删了

 7、修改联系人姓名

代码示例:

这里面需要使用获取汉字字符串的首字母,需要一个JAR包和类文件,需要的朋友可以私信我。

public class FunctionManager {
	private TreeMap<String, ArrayList<LinkMan>> map = new TreeMap<>();
	//给map集合添加联系人
	public void addLinkMan(LinkMan linkman) {
		//获取联系人姓名首字母
		String s1 = Pinyin4jUtil.getFirstLetter(linkman.getName());
		//进行判断,是否有这个key值
		if( map.containsKey(s1)) {
			ArrayList<LinkMan> arrayList = map.get(s1);
			arrayList.add(linkman);
		}else {
			ArrayList<LinkMan> arrayList = new ArrayList<>();
			arrayList.add(linkman);
			map.put(s1 , arrayList);
		}
	}
	//根据分组输出整个分组信息,按照姓名排序
	public void printLinkMan(String s1) {
		String s2 = s1.toUpperCase();
		//判断是否存在这个字母
		if(!map.containsKey(s2)) {
			System.out.print("未找到您想要的联系人分组");
		}else {
			ArrayList<LinkMan> arrayList = map.get(s2);
			TreeSet<LinkMan> treeSet = new TreeSet<>(new Comparator1());
			treeSet.addAll(arrayList);
			for( LinkMan linkMan : treeSet) {
				System.out.print(s2+"分组:");
				System.out.println(linkMan);
			}
		}
	}
	//根据性别查找所有联系人,并且按照年龄降序
	//根据电话获取联系人信息
	public void getLinkManByPhone(int phone) {
		LinkMan linkman1 = null;
		for( String s1 : map.keySet()) {
			ArrayList<LinkMan> arrayList = map.get(s1);
			for(LinkMan linkMan : arrayList) {
				if( linkMan.getPhone() == phone) {
					linkman1 = linkMan;
				}
			}
		}
		if( !(linkman1 == null)) {
			System.out.print("电话为"+phone+"的联系人信息:");
			System.out.println(linkman1);
		}else {
			System.out.println("未从此电话号码找到联系人");
		}
	}
	//根据性别获取联系人,按照降序排列
	public void getLinkManByGender(String gender) {
		if(!(gender.equals("男")||gender.equals("女"))) {
			System.out.println("请输入正确的性别");
			return;
		}
		TreeSet<LinkMan> treeSet = new TreeSet<>(new Comparator2());
		for( String s1 : map.keySet()) {
			ArrayList<LinkMan> arrayList = map.get(s1);
			for( LinkMan linkMan : arrayList) {
				if(linkMan.getGender().equals(gender)) {
					treeSet.add(linkMan);
				}
			}
		}
		if(treeSet.isEmpty()) {
			System.out.println("集合中没有这个性别的人");
		}
		for(LinkMan linkMan : treeSet) {
			System.out.println(linkMan);
		}
	}
	//根据姓名删除联系人
	public void removeLinkManByName(String name ) {
		String s2 = Pinyin4jUtil.getFirstLetter(name);
		if(!map.containsKey(s2)) {
			System.out.println("集合中没有这个姓名的人");
			return;
		}
		ArrayList<LinkMan> arrayList = map.get(s2);
		Iterator<LinkMan> iterator = arrayList.iterator();
		while(iterator.hasNext()) {
			if(iterator.next().getName().equals(name)) {
				iterator.remove();
			}
		}
		if(arrayList.isEmpty()) {
			map.remove(s2);
		}
	}
	//根据传入的字母,删除某个分区
	public void removeGroupByAfferent(String s1) {
		String s2 = s1.toUpperCase();
		if(map.containsKey(s2)) {
			map.remove(s2);
		}
		else {
			System.out.println("请输入正确的字母");
		}
	}
	//修改练习人姓名
	//先判断是否有这个首字母,其次判断是否有这个名字,如果有将linkman取出来,删除掉,修改值,重新调用添加LinkMan方法,还要判断删除LinkMan之后的分组是否为空,若为空就删除分组
	public void reviseName(String name,String name1) {
		String s1 = Pinyin4jUtil.getFirstLetter(name);
		if( !map.containsKey(s1)) {
			System.out.println("请输入正确的姓名");
			return;
		}
		LinkMan linkMan1 = null;
		ArrayList<LinkMan> arrayList = map.get(s1);
		Iterator<LinkMan> iterator = arrayList.iterator();
		while(iterator.hasNext()) {
			LinkMan l1 =iterator.next();
			if(l1.getName().equals(name)) {
				linkMan1 = l1;
				iterator.remove();
			}
		}
		if(linkMan1 == null) {
			System.out.println("集合中没有这个姓名的人");
		}
		if(arrayList.isEmpty()) {
			map.remove(s1);
		}
		linkMan1.setName(name1);
		addLinkMan(linkMan1);
		
	}
	//遍历整个map集合
	public void printMap() {
		for( String s1 : map.keySet()) {
			ArrayList<LinkMan> a1 = map.get(s1);
			System.out.print(s1+":");
			for(LinkMan linkMan : a1 ) {
				System.out.print(linkMan.toString()+" ");
			}
			System.out.println();
		}
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值