通过Hashmap迭代ArrayList以查找未使用的元素

时间:2018-06-18 16:57:07

标签: java hashmap

尝试制作应用程序用户管理系统突然出现了问题。我有一个ArrayList组f.e. {Group1,Group2,Group3}。如果我将user分配给一个组,我会将其放入HashMap,其中{key,value}为{user,group}。如果user没有分配group,我想删除此group。如何找出group未使用的哪个?

2 个答案:

答案 0 :(得分:1)

假设您有ArrayList<Group> groupsHashMap<User, Group> userMap,那么您可以找到没有用户的群组:

Set<Group> mappedGroup = new HashSet<>(userMap.values());
groups.removeIf(mappedGroup::contains); /? After this `groups` is unmapped groups list

前提是Group类已经实现equals/hashcode

如果您不想修改原始groups列表,则可以执行以下操作:

List<Group> unmappedGroups = groups.stream().filter(g -> !mappedGroup.contains(g))
                                   .collect(Collectors.toList());

答案 1 :(得分:0)

将地图值转换为HashSet以获得恒定时间,如下所示

Set<String> usedGroups = new HashSet<>(map.values());

然后可以按以下方式进行检查

for (String group : list) {
     if (usedGroups.contains(group)) { ... }
}