java 多种判断key是否在map中存在的方法

java 中有时候会遇到判断传过来的map里是否包含了指定的key,我目前只发现两种办法,如果有其他方法欢迎补充 我添加上去:

1.

	
HashMap map = new HashMap();
		map.put("1", "value1");
	map.put("2", "value2");

		Iterator keys = map.keySet().iterator();
		while(keys.hasNext()){
			String key = (String)keys.next();
			if("2".equals(key)){
				System.out.println("存在key");
			}
		}
第二种:
	
boolean flag=map.containsKey("opt")

  • 10
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
A:以下是几种可能的方法: 1. 遍历较长的list<map>,对于每个map,逐一比较其它list<map>是否存在相同的key和value。如果没有,则该key和value为不同的。时间复杂度为O(nk),其n为list<map>的长度,k为最大的map的大小。 2. 对于较短的list<map>,将其化为一个set,其元素为(key, value)的二元组,然后遍历较长的list<map>,对于其每个(key, value)的二元组,判断是否在set。如果不存在,则该(key, value)为不同的。时间复杂度为O(nlogn),其n为list<map>的长度。 3. 对于较短的list<map>,先遍历其的所有map,将每个map的所有元素插入到一个哈希表key-value对),然后遍历较长的list<map>,对于其每个map,逐一查找哈希表是否存在相同的key和value。如果没有,则该key和value为不同的。时间复杂度为O(kn),其n为list<map>的长度,k为最大的map的大小。 4. 对于两个list<map>的所有元素,可以使用Java 8的Stream API进行处理,先将每个map的所有元素化为一个(key, value)的二元组,然后使用Stream的filter()方法过滤出不同的二元组。示例代码如下: ``` List<Map<String, String>> list1 = // 第一个list<map> List<Map<String, String>> list2 = // 第二个list<map> Set<Map.Entry<String, String>> set1 = list1.stream() .flatMap(map -> map.entrySet().stream()) .collect(Collectors.toSet()); Set<Map.Entry<String, String>> set2 = list2.stream() .flatMap(map -> map.entrySet().stream()) .collect(Collectors.toSet()); Set<Map.Entry<String, String>> diff = set1.stream() .filter(e -> !set2.contains(e)) .collect(Collectors.toSet()); ``` 其,set1和set2分别为两个list<map>的所有元素所构成的集合,而diff为不同的元素的集合。这种方法的时间复杂度为O(nk),其n为list<map>的长度,k为最大的map的大小。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值