检查哈希图中的列表是否包含 2 个值并且仅包含这 2 个值
Check if a list within the hashmap contains 2 values and only those 2 values
我将如何检查此哈希图是否包含 2 个特定值,如果它包含除了这 2 个值之外的任何其他值,它会取消事件。 (2 个值)每个玩家的字符串是标识符,也就是玩家的唯一 ID。因此,如果玩家在哈希图中有 3 个或更多值,它会取消事件。
HashMap<String, List<Material>> result = new HashMap<>();
List<Material> values = new ArrayList<>();
要检查列表是否包含两个特定的 Material
枚举并且仅包含这两个,您可以检查列表是否包含两个元素(列表的长度是否为 2),然后比较这两个元素元素以查看它们是否是正确的类型。不完整代码示例:
if (result.containsKey(PLAYER_NAME) && result.get(PLAYER_NAME).size() == 2) {
List<Material> list = result.get(PLAYER_NAME);
Material first = list.get(0);
Material second = list.get(1);
if (first == Material.FIRST && second == Material.SECOND || first == Material.SECOND && second == Material.FIRST) {
//Don't cancel the event
}
}
PLAYER_NAME 是玩家的 String
名称,Material.FIRST 和 Material.SECOND 是您要检查的两个 Material
。不过不确定我是否正确理解了你的问题。
我从问题中理解的,我写在代码中。
compareTo()
方法比较两个 Material
对象和 returns 0
如果它们匹配。方法可以访问假设变量 result
。
public boolean continueEvent(String playerId, List<Material> values)
{
List<Material> mapValues=result.get(playerId);
if( mapValues.size()!=2){
return false;
}
else{
if((mapValues.get(0).compareTo(values.get(0)==0 && mapValues.get(1).compareTo(values.get(1)==0) || (mapValues.get(0).compareTo(values.get(1)==0 && mapValues.get(1).compareTo(values.get(0)==0)){
return true;
else
return false;
}
}
}
注:以上代码为逻辑说明。我没有执行过。可能有语法错误。
我将如何检查此哈希图是否包含 2 个特定值,如果它包含除了这 2 个值之外的任何其他值,它会取消事件。 (2 个值)每个玩家的字符串是标识符,也就是玩家的唯一 ID。因此,如果玩家在哈希图中有 3 个或更多值,它会取消事件。
HashMap<String, List<Material>> result = new HashMap<>();
List<Material> values = new ArrayList<>();
要检查列表是否包含两个特定的 Material
枚举并且仅包含这两个,您可以检查列表是否包含两个元素(列表的长度是否为 2),然后比较这两个元素元素以查看它们是否是正确的类型。不完整代码示例:
if (result.containsKey(PLAYER_NAME) && result.get(PLAYER_NAME).size() == 2) {
List<Material> list = result.get(PLAYER_NAME);
Material first = list.get(0);
Material second = list.get(1);
if (first == Material.FIRST && second == Material.SECOND || first == Material.SECOND && second == Material.FIRST) {
//Don't cancel the event
}
}
PLAYER_NAME 是玩家的 String
名称,Material.FIRST 和 Material.SECOND 是您要检查的两个 Material
。不过不确定我是否正确理解了你的问题。
我从问题中理解的,我写在代码中。
compareTo()
方法比较两个 Material
对象和 returns 0
如果它们匹配。方法可以访问假设变量 result
。
public boolean continueEvent(String playerId, List<Material> values)
{
List<Material> mapValues=result.get(playerId);
if( mapValues.size()!=2){
return false;
}
else{
if((mapValues.get(0).compareTo(values.get(0)==0 && mapValues.get(1).compareTo(values.get(1)==0) || (mapValues.get(0).compareTo(values.get(1)==0 && mapValues.get(1).compareTo(values.get(0)==0)){
return true;
else
return false;
}
}
}
注:以上代码为逻辑说明。我没有执行过。可能有语法错误。