【问题标题】:How to check if an list of objects contains a key from a List of strings如何检查对象列表是否包含字符串列表中的键
【发布时间】:2021-09-17 22:43:47
【问题描述】:

您好,我还是 Java 新手。我有一个来自 UI 的名为 formData 的对象列表,如下所示:

[
 {
   fieldName: "phone",
   value: "1111111111"
 {
[

我有一个名为 requiredTypes 的字符串列表,代表我需要检查的键:

["phone", "DOB"]

我希望能够遍历 formData 以查看我的 formData 在 requiredTypes 中是否有这些类型。如果 formData 中的 fieldNames 包含来自 requiredTypes 的这些类型,则返回 true。如果不是,则返回 false。

所以对于这种情况,它将返回 false,因为它缺少 DOB

我尝试使用 Java 8 Streams 来查看是否可以进行比较,但它返回 void

  val hasFormType = formData.stream().forEach(fieldData -> 
    requiredTypes.forEach(requiredType -> 
    requiredType.contains(fieldData.getFieldName())));

我在滥用流吗?这种情况有更好的方法吗?感谢您的宝贵时间。

【问题讨论】:

    标签: java java-8 java-stream


    【解决方案1】:

    将字段名称收集到一个集合中,并将其与所需字段的集合进行比较

    Set<String> existingFields = formData.stream()
        .map(FieldData::getFieldName).collect(Collectors.toSet());
    
    val hasFormType = existingFields.containsAll(requiredTypes);
    

    【讨论】:

      猜你喜欢
      • 2017-02-10
      • 2013-01-01
      • 1970-01-01
      • 2022-12-13
      • 1970-01-01
      • 1970-01-01
      • 2017-05-25
      • 1970-01-01
      • 2020-02-26
      相关资源
      最近更新 更多