从java中给定对象值的映射中删除键值对

时间:2017-06-10 12:01:27

标签: java

如何从给定对象值的Java地图中删除元素。

示例数据:

{
3cc612eqwdwc3-4dce-11e7-b4a2-fe984uyucc15272:[code=5
     user_key=dcfb5f5f-588e-11e6-85b9-fe984cc15272
     message=You have successfully logged in...
     roles_name=PLATFORM_ADMIN
     access_token=3cc612c3-4dce-11e7-b4a2-fe984cc15272
     user_id=superadmin
     utc_time=2017-06-10 11:16:23.0
     roles_id=7
     token_type=0
     access_key=d3cd4e3f-5946-11e6-9bb0-fe984cc15272
     status=true
     is_valid=null
     ]
3cc61fdfff2c3-4dce-11e7-b4atuy2-fe984cc15272:[code=5
     user_key=dcfb5f5f-588e-11e6-85b9-fe984cc15272
     message=You have successfully logged in...
     roles_name=PLATFORM_ADMIN
     access_token=3cc612c3-4dce-11e7-b4a2-fe984cc15272
     user_id=superadmin
     utc_time=2017-06-10 11:16:23.0
     roles_id=7
     token_type=0
     access_key=d3cd4e3f-5946-11e6-9bb0-fe984cc15272
     status=true
     is_valid=null
     ]
3cc612cddf3-4dce-11e7-b4a562-fe984cc15272:[code=5
     user_key=dcfb5f5f-5ddd88e-11e6-85b9-fe984cc15272
     message=You have successfully logged in...
     roles_name=PLATFORM_ADMIN
     access_token=3cc612c3-4dce-11e7-b4a2-fe984cc15272
     user_id=superadmin
     utc_time=2017-06-10 11:16:23.0
     roles_id=7
     token_type=0
     access_key=d3cd4e3f-5946-11e6-9bb0-fe984cc15272
     status=true
     is_valid=null
     ]
3cc6f12c3-4dce-11e7-b4oopa2d-fe984cc15272:[code=5
     user_key=dcfb5f5f-588e-11e6-85b9-fe984cc15272
     message=You have successfully logged in...
     roles_name=PLATFORM_ADMIN
     access_token=3cc612c3-4dce-11e7-b4a2-fe984cc15272
     user_id=superadmin1
     utc_time=2017-06-10 11:16:23.0
     roles_id=7
     token_type=0
     access_key=d3cd4e3f-5946-11e6-9bb0-fe984cc15272
     status=true
     is_valid=null
     ]
3cc61vc2c3-4dcdse-11ep[7-b4a2-fe984cc15272:[code=5
     user_key=dcfb5f5f-5ddd88e-11e6-85b9-fe984cc15272
     message=You have successfully logged in...
     roles_name=PLATFORM_ADMIN
     access_token=3cc612c3-4dce-11e7-b4a2-fe984cc15272
     user_id=superadmin1
     utc_time=2017-06-10 11:16:23.0
     roles_id=7
     token_type=0
     access_key=d3cd4e3f-5946-11e6-9bb0-fe984cc15272
     status=true
     is_valid=null
     ]
}

对于上面的示例数据,有没有办法在不使用循环或其他一些优化方法的情况下删除包含对象值user_key=dcfb5f5f-588e-11e6-85b9-fe984cc15272的所有地图元素。

我已尝试使用remove()方法,但只删除了使用密钥。

1 个答案:

答案 0 :(得分:0)

好吧,我可能不正确。但似乎您无法通过键或值删除。我建议使用过滤。基于Java8的伪代码:

Map<Key, Value> filteredMap = map.entrySet()
.stream()
.filter(e -> !e.getValue().getUserKey().equals("dcfb5f5f-588e-11e6-85b9-fe984cc15272"))
.collect(Collectors.toMap(e -> e.getKey(), e -> e.getValue()));