栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

利用集合的HashMap实现简单的联系人系统

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

利用集合的HashMap实现简单的联系人系统

HashMap 是以键值对(key-value)存储在散列表(无序)中。父类是AbstractMap,实现了 Map、Cloneable、java.io.Serializable 接口; 测试类,实现联系人交互过程
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;
import com.week4.wenday.Exercisers;
import com.week4.wenday.Records;

public class TestRecords {
	static Scanner input = new Scanner(System.in);
	
	public static void main(String[] args) {
		Map> er = new HashMap(); // 存储联系人及聊天记录
		System.out.println("欢迎进入联系人系统!");
		while (true) {
			System.out.println("选项:1、查看所联系人信息t2、添加练习人t3、发送信息t4、查看通话记录t5、退出联系人系统");
			switch (input.nextInt()) {
			case 1:
				finds(er.keySet()); // 传入所聊天人的个人信息
				break;
			case 2:
				addPhon(er); // 传入储存对象,向对象中添加号码
				break;
			case 3:
				dial(er); // 传入储存对象,掉用对象互相发信息
				break;
			case 4:
				findInfos(er); // 传入储存对象,获取聊天信息
				break;
			case 5:
				System.exit(0); // 退出系统
			default:
				System.out.println("操作错误!");
				break;
			}
		}
	}

	// 传入储存对象,获取聊天信息
	private static void findInfos(Map> er) {
		System.out.print("选择联系人:");
		String name = input.next();
		Exercisers e = findName(er.keySet(), name); // 通过姓名找联系人对象
		if (e == null)
			System.out.println("没有该联系人!");
		else {
			List listInfo = er.get(e); // 获取聊天记录
			if (listInfo.isEmpty())
				System.out.println("没有通话记录!");
			else {
				System.out.println("有" + listInfo.size() + "条通话记录:");
				for (Records r : listInfo) // 遍历聊天记录
					System.out.println(r);
			}
		}
	}

	// 传入储存对象,掉用对象互相发信息
	private static void dial(Map> er) {
		System.out.print("选择联系人:");
		String name = input.next(), content;
		Set ers = er.keySet();
		Exercisers e1 = findName(ers, name); // 通过姓名找联系人对象
		if (e1 == null) // 查看对象是否存在
			System.out.println("没有该联系人!");
		else {
			System.out.print("拨打号码:");
			String phone = input.next();
			Exercisers e2 = findPhone(ers, phone); // 通过电话号码找联系人对象
			if (e2 == null) // 查看对象是否存在
				System.out.println("你拨打的号码不存在!");
			else {
				System.out.print("连接成功!开始谈话(输入N通话结束):");
				SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss"); // 格式化时间
				boolean flag = false; // 两个状态表说话与回话
				while (!(content = input.next()).equals("N")) { // 聊天过程
					if (flag) {
						flag = false;
						content = e2.getName() + ": " + content; // 回话者内容
					} else {
						flag = true;
						content = e1.getName() + ": " + content; // 说话者内容
					}
					er.get(e1).add(new Records(name, formatter.format(new Date()), content)); // 打电话人添加聊天记录
					er.get(e2).add(new Records(name, formatter.format(new Date()), content)); // 接电话人添加聊天记录
				}
			}
		}
	}

	// 传入储存对象,向对象中添加号码
	private static void addPhon(Map> er) {
		System.out.print("输入联系人姓名、电话号码和地址:");
		String name = input.next(), phon = input.next(); // 输入姓名和号码
		Exercisers e = findName(er.keySet(), name); // 通过姓名获取联系人对象
		if (e == null) { // 未找到对象
			String addr = input.next(); // 输入地址
			Exercisers exercisers = new Exercisers(name, new ArrayList(), addr); // 实例化(创建)对象
			exercisers.getTetelPhon().add(phon); // 向对象中添加号码
			er.put(exercisers, new ArrayList()); // 将对象存储到HashMap中
		} else { // 找到对象
			List oldP = e.getTetelPhon();
			if (oldP.toString().contains(phon)) // 查看号码是否已存在
				System.out.println("号码已存在!");
			else
				oldP.add(phon);
		}
	}

	private static Exercisers findName(Set set, String name) {
		for (Exercisers e : set)
			if (e.getName().equals(name))
				return e;
		return null;
	}

	private static Exercisers findPhone(Set set, String phone) {
		for (Exercisers e : set)
			if (e.getTetelPhon().toString().contains(phone))
				return e;
		return null;
	}

	// 传入所聊天人的个人信息
	private static void finds(Set set) {
		if (set.isEmpty())
			System.out.println("没有联系记录!");
		else {
			System.out.println("姓名t地址t电话号码");
			for (Exercisers e : set) // 遍历联系人
				System.out.println(e);
		}
	}
}
联系人类,储存联系人信息
import java.util.Arrays;
import java.util.List;

public class Exercisers {
	private String name;  //联系人姓名
	private List tetelPhon;  //联系人电话号码
	private String address;  //联系人地址

	public Exercisers() {}

	public Exercisers(String name, List tetelPhon, String address) {
		super();
		this.name = name;
		this.tetelPhon = tetelPhon;
		this.address = address;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public List getTetelPhon() {
		return tetelPhon;
	}

	public void setTetelPhon(List tetelPhon) {
		this.tetelPhon = tetelPhon;
	}

	public String getAddress() {
		return address;
	}

	public void setAddress(String address) {
		this.address = address;
	}

	@Override
	public String toString() {
		return name + "t" + address + "t" + tetelPhon;
	}
}
信息类,记录每条聊天信息
import java.util.Arrays;

public class Records {
	private String tetelPhon;
	private String time;
	private String info;
	
	public Records() {}

	public Records(String tetelPhon, String time, String info) {
		super();
		this.tetelPhon = tetelPhon;  //打电话人的名字或号码
		this.time = time;  //聊天的时间点
		this.info = info;  //聊天的内容
	}


	public String getTime() {
		return time;
	}

	public void setTime(String time) {
		this.time = time;
	}

	public String getInfo() {
		return info;
	}

	public void setInfo(String info) {
		this.info = info;
	}

	@Override
	public String toString() {
		return tetelPhon + "打的电话 t时间:" + time + "t 内容:" + info;
	}
}
测试结果


结束语:简单的操作系统,有更简单的方法欢迎指导。要复杂化,欢迎在评论区讨论。转载请指明出处。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/590757.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号