利用集合的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<Exercisers, List<Records>> 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<Exercisers, List<Records>> er) {
   
		System
DFA(Deterministic Finite Automaton)是一种有限状态自动机,常用于词法分析器中。DFA 可以通过状态转移图来表示,其中每个状态都有一个与之对应的字符集,用于接受特定的输入字符。在实际应用中,为了减少状态数量,需要对 DFA 进行简化。下面介绍一种利用 hashmap 实现 DFA 简化的方法。 1. 构建 DFA 状态转移图 首先,需要构建 DFA 的状态转移图。我们可以用一个二维数组来表示状态转移图,其中每个元素表示当前状态接受某个字符后转移到的下一个状态。 2. 标记终止状态 在 DFA 状态转移图中,有些状态是终止状态,即能够接受一定的字符序列并结束。我们需要对这些终止状态进行标记。 3. 合并状态 对于 DFA 状态转移图中的每对状态,我们可以检查它们是否等价。如果等价,则可以将它们合并为一个新的状态,并更新状态转移图中的所有相关转移。 4. 利用 hashmap 实现状态合并 要实现状态合并,我们可以利用 hashmap 来存储状态的等价类。首先,我们将所有终止状态以及非终止状态分别存储在两个 hashmap 中。然后,我们遍历非终止状态的 hashmap,对于每个状态,我们检查它是否已经在某个等价类中。如果是,则跳过;否则,我们将其加入新的等价类中,并将其所有关联的状态也加入该等价类。最后,我们将新的等价类加入 hashmap 中。 5. 生成简化后的 DFA 最后,我们可以基于新的等价类构建简化后的 DFA 状态转移图。具体地,我们将每个等价类视为一个新的状态,并根据等价类中的某个状态的接受字符集来确定新状态的接受字符集。然后,我们更新状态转移图中的所有转移,将原来的状态替换为新的等价类。 以上就是利用 hashmap 实现 DFA 简化的方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AnMaplePig

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值