【问题标题】:comparing two objects and finding the missing fields with java比较两个对象并使用 java 查找缺少的字段
【发布时间】:2020-05-27 22:02:22
【问题描述】:

我想从用户提供的成分中找到食谱 并告诉用户主配方成分中缺少的成分 我怎样才能找到丢失的成分?我的意思是我应该如何查询来比较?

      {
          "ingredients":[
                          {"title":"apple"},
                          {"title":"cheese"},
                          {"title":"banana"},
                          {"title":"orange"},
                     ]
      } 

第二个是:

[
    {"title":"apple"},
    {"title":"cheese"},
]

它应该给我们缺少另外两个像:

{"title":"banana"},
{"title":"orange"},

【问题讨论】:

  • 这些不是 java 对象,所以:您能否在帖子中添加更多文本来解释您要比较的什么?它看起来像 JSON 语法,但 JSON 是纯字符串数据,比较它们 as strings 非常愚蠢,所以至少你可能会尝试比较解析后的 JSON,在这种情况下:请谈谈你是如何开始尝试做你提到你正在尝试做的事情的。
  • 如果这些是一些 Java HashMap 中的条目,那么您总是可以对这两个映射的值集进行查找并比较它们,然后将另一个集合中缺少的那些收集到另一个集合中
  • 您的问题是否与集合中的 MongoDB 文档有关?您是否试图为给定的一组供应成分找到缺失的成分文件?您在使用 MongoDB Java 驱动程序吗?

标签: java arrays mongodb object arraylist


【解决方案1】:

我不确定您打算使用什么对象,但如果每个对象都拥有一组这些值,您可以根据 Prabhaker A 的回答 here 找到不同之处,如下所示:

Set<String> objectASet = new HashSet<>(Arrays.asList("apple", "cheese", "banana", "orange"));
Set<String> objectBSet = new HashSet<>(Arrays.asList("apple", "cheese"));

Set<String> differenceSet = objectASet.removall(objectBSet);

但是,这将更改对象 A 的集合的值,因此需要制作一个副本以保留这些值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-07
    • 2022-12-06
    • 1970-01-01
    • 2022-09-27
    • 2023-02-11
    • 1970-01-01
    • 1970-01-01
    • 2012-04-20
    相关资源
    最近更新 更多