在我的WebApplication中,我必须检查来自RequestBody的许多传入查询参数。为了不在每个方法中编写相同的代码,我想编写一个返回一个布尔值的函数。当接收到所有必需的参数并且entrySet的值不是null时,方法应该返回true(否则为false),我可以稍后在程序中使用传入的查询参数。
因此,我将所有传入的参数打包到一个HashMap中。另外,我在方法中放入了一个特定的列表,它提供了所需的参数(键)以进行检查。
QueryParams的示例映射:
Map queryParams = new HashMap();
queryParams.put("id", "1");
queryParams.put("name", "Jane");
queryParams.put("lastname", "Doe");
数组示例:
String[] keys = {"id", "name", "lastname"};
public static Boolean checkRequestParams(Request request, String[] keys) {
Map params = (JsonUtil.fromJson(request.body(), HashMap.class));
Iterator it = params.entrySet().iterator();
while (it.hasNext()) {
Map.Entry pair = (Map.Entry) it.next();
for (int i = 0; i < keys.length; i++) {
if (pair.getKey().equals(keys[i])) {
return true;
}
}
数组提供的键是客户端发送的QueryParams。不,我想对它们进行比较,并检查Hashmap中的键是否等于数组中的给定键,以及Map中键的值是否不为空。
我试过很多变体。要么我得到了nullPointerExceptions,要么我总是得到一个空的返回。
我可能错了,但据我所知,您希望验证以下条件:
{“id”,“name”,“lastname”}
。您可以使用类似于以下内容的内容:
map.entrySet()
.stream()
.allMatch(entry -> keys.contains(entry.getKey()) && entry.getValue() != null)
因此,我们迭代entrySet,检查entry键是否属于定义的集合,以及值是否不为NULL。下面是一个更详细的例子:
Set<String> keys = Set.of("id", "name", "lastname");
Map<String,List<Integer>> map = Map.of("id", List.of(1,2,3), "name", List.of(4,5,6));
map.entrySet()
.stream()
.allMatch(entry -> keys.contains(entry.getKey()) && entry.getValue() != null);
Map<String,List<Integer>> map1 = Map.of("id", List.of(1,2,3), "not in the keys", List.of(4,5,6));
map1.entrySet()
.stream()
.allMatch(entry -> keys.contains(entry.getKey()) && entry.getValue() != null);
请注意,我正在使用集合工厂方法创建map
、list
和set
,set
,set
,set
,set
,set
已经添加到
至于您的代码,您将始终得到true
,因为只要有一个entrySet满足条件,方法就会返回结果。
for (int i = 0; i < keys.length; i++) {
if (pair.getKey().equals(keys[i])) {
return true; // one single match found return true.
}
}
您可以尝试反转条件,并在出现不匹配时立即返回false。
for (int i = 0; i < keys.length; i++) {
if (!pair.getKey().equals(keys[i]) || pair.getValue() == null) {
return false; // mismatch found, doesn't need to verify
// remaining pairs.
}
}
return true; // all pairs satisfy the condition.
希望你觉得这有用。
我有一个字符串数组,由整数作为键标识。我想按键对这个HashMap进行排序。
如何比较两个列表是否相等验证数据来自Excel工作表。我需要验证两个列表是否相同,并且列表中没有附加元素或缺少元素。我不需要对列表进行排序。打印输出CAGID Excel data=CAGID Web列表
我正在制作一个输血游戏。我有2个数组列表。一个有献血者的血型和姓名,第二个有接受者的血型和姓名。所有的名字我都会得到用户的输入并将它们存储在一个数组中(接受者数组列表更大)。 我不知道如何使用布尔2D数组将两个数组列表进行比较(应该返回true或false)。例如,在所有捐赠者和接受者输入姓名和血型后,程序应该告诉他们是否匹配。 我知道下面的代码是错误的,但我不知道怎么做。
背景:https://dev.to/carey/java-map-keys-should-always-be-comparable-2c1b 我想要达到的目标: 查找使用HashMap的代码 我被困在第二步 你知道如何得到泛型类的类型吗?谢谢你的支持。
我正在尝试编写一个日历。我将我的约会保存在另一个ArrayList中的两个不同的ArrayList中。 字符串(Subject,Place,People)进入另一个ArrayList=arstr中的第一个ArrayList 整数(Date和Time)进入另一个ArrayList=arInt中的第二个ArrayList 当我创建约会时,我希望根据日期对其进行排序。所以如果我想添加一个新的约会,它应该
问题内容: 我有以下 我想将此日期与今天的日期进行比较(即我想知道这是今天之前还是今天之前) 我需要使用什么功能? 问题答案: 将其转换为时间值 给你几秒钟 将检查是否已在最后一天之内。