gpt4 book ai didi

java - 如何检查字符串是否在 hashmap 内的 arrayList 中

转载 作者:行者123 更新时间:2023-12-01 18:44:23 24 4
gpt4 key购买 nike

所以我有一个 HashMap

HashMap<String, ArrayList<String> gMap = new HashMap<String, ArrayList<String>();

当有人创建组时,组长将被添加到 HashMap 的键中,然后组内的所有用户都会被添加到数组列表中

gMap.get(groupLeader).add(user);

我正在尝试只允许群组领导者邀请玩家,但如果玩家不属于任何群组并邀请其他用户,则会自动创建一个群组,并且该玩家成为群组领导者。

所以,通常我会这样做

for(ArrayList<String> list : gMap.values()){
if(list.contains(user)){
//do something since the player is not part of the list
}
}

但我不能这样做,因为可能有多个 arrayList,因此即使用户不是一个 arrayList 的一部分,也不意味着他们不在另一个 arrayList 中。

所以我很好奇如何检查所有 arrayList 并仅在用户不属于其中任何一个时才执行某些操作。

最佳答案

您实际上正在创建一个 Multimap (键到值集合的映射)数据结构在这里,您会发现如果直接使用它,您将不必像现在一样重新发明轮子。 Guava定义了一个非常好的Multimap interface ,包括ArrayListMultimap存储您想要的数据,并且有一个 containsValue()干净地完成您所需的方法。正如其他人提到的,包含对列表的检查很慢,您可以使用 HashMultimap如果您实际上并不关心顺序,则可以更有效地执行这些包含检查,或者 LinkedHashMultimap如果你真的这样做的话。

如果您还没有使用 Guava,那么您就错过了 - 它提供了无数优秀的实用程序和良好实践。

关于java - 如何检查字符串是否在 hashmap 内的 arrayList 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18473047/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com