map isempty containskey containsvalue

本文介绍了Java中使用HashMap的基本操作,包括put、get、containsKey和containsValue等方法,并对比了containsKey与containsValue的效率差异。containsKey的效率明显高于containsValue,前者通过查找key来实现,而后者需要遍历所有条目来找到对应的value。
Map map = new HashMap();
		map.put("key1", "v1");
		map.put("key2", "v2");
		map.put("key3", "v3");
		System.out.println("map.containsKey(key1)==========="+map.containsKey("key1"));
//		map.containsKey(key1)===========true
		System.out.println("map.containsValue(v2)==========="+map.containsValue("v2"));
//		map.containsValue(v2)===========true
		System.out.println("map.isEmpty()==========="+map.isEmpty());
//		map.isEmpty()===========false
		System.out.println("map.get(key3)==========="+map.get("key3"));
//		map.get(key3)===========v3

 containkey的效率比较高,比containsvalue的效率高几个数量级

containskey是找含key,containsvalue是找key映射到的value,结果都是boolean

public static Map<String, Object> parseCron(String cronExpression) { if (cronExpression == null || cronExpression.trim().isEmpty()) { throw new IllegalArgumentException("cronExpression cannot be empty"); } String[] fields = cronExpression.trim().split("\\s+"); if (fields.length != 6) { throw new IllegalArgumentException("Invalid cron format (expected 6 fields)"); } // 验证固定字段 if (!"0".equals(fields[0]) || !"*".equals(fields[4]) || (!"?".equals(fields[5]) && !isValidDayOfWeek(fields[5]))) { throw new IllegalArgumentException("Unsupported cron structure"); } // 解析分钟和小时 int minute = Integer.parseInt(fields[1]); int hour = Integer.parseInt(fields[2]); if (hour < 0 || hour > 23 || minute < 0 || minute > 59) { throw new IllegalArgumentException("Invalid time values in cron"); } Map<String, Object> result = new HashMap<>(); result.put("periodMinute", minute); result.put("periodHour", hour); // 处理星期字段(支持数字和英文缩写) String dayField = fields[5]; if (DAY_OF_WEEK_NUM_MAP.containsKey(dayField)) { result.put("periodTime", DAY_OF_WEEK_NUM_MAP.get(dayField)); } else if (DAY_OF_WEEK_MAP.containsValue(dayField)) { result.put("periodTime", getKeyByValue(dayField)); } else { throw new IllegalArgumentException("Invalid day-of-week format"); } return result; } private static String getKeyByValue(String value) { return CronExpressionBuilderUtil.DAY_OF_WEEK_MAP.entrySet().stream() .filter(e -> e.getValue().equals(value)) .map(Map.Entry::getKey) .findFirst() .orElse(null); } private static boolean isValidDayOfWeek(String field) { return DAY_OF_WEEK_MAP.containsValue(field); // 检查是否在1-7范围内 } 无法解析"0 45 15 * * ?"。请给出一个完整方案解决cron表达式的反解析
最新发布
10-15
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值