当前位置: 首页 > 知识库问答 >
问题:

按另一列表中存在的日期对列表进行排序

闻人凯泽
2023-03-14

我有这样一个情况:

@Getter
@Setter
public class ObjectA {
      private Integer id;
      private String code;
      private String name;
}

@Getter
@Setter
public class ObjectB {
      private Integer id;
      private Timestamp createdOn;
}

我必须对列表 进行排序,该列表还包含列表 的ID,排序必须为:

    null
 listA.sort(o -> o.getName())
                .thenComparing(o -> o.getCode()).reversed();

共有1个答案

仲法
2023-03-14

也许你需要这样的东西:

listA.sort(Comparator.comparing(ObjectA::getId,
                                (id1,id2) -> { Optional<ObjectB> o1 = listB.stream()
                                                                          .filter(o -> o.getId().equals(id1))
                                                                          .findFirst();

                                               Optional<ObjectB> o2 = listB.stream()
                                                                          .filter(o -> o.getId().equals(id2))
                                                                          .findFirst();

                                               if (o1.isPresent() && o2.isPresent())
                                                 return o2.get().getCreatedOn()
                                                                 .compareTo(o1.get().getCreatedOn());
                                               else if (!o1.isPresent() && !o2.isPresent())
                                                       return 0;
                                                    else return o2.isPresent()?1:-1;
                                              })
                      .thenComparing(ObjectA::getName)
                      .thenComparing(ObjectA::getCode, Comparator.reverseOrder()));
 类似资料:
  • 问题内容: 我在Python中有两个列表 我想对第一个列表进行排序,并使用结果对第二个列表进行排序。 换句话说,结果应为: 我知道如何分别对每个列表进行排序,但是如何使用对另一个列表进行排序所产生的索引排列来对一个列表进行排列呢? 问题答案: 施瓦兹变换

  • 问题内容: 我有一个这样的字符串列表: 使用Y中的值对X进行排序以获取以下输出的最短方法是什么? 具有相同“键”的元素的顺序无关紧要。我可以求助于for结构的使用,但我好奇是否有更短的方法。有什么建议么? 问题答案: 最短代码 例: 一般来说 解释: 两个。 创建一个新的,list基于zip使用排序sorted()。 使用列表推导从排序的,压缩的中提取每对的第一个元素list。

  • 我有下面的列表,我试着按日期时间重新排序。 我想以最远到期日期最先显示的方式重新排序列表: 我尝试过的(更新)- 在排序函数上,我收到了这个错误(通过上述修复解决):

  • 我看到过其他几个类似于这个问题的问题,但我还没有找到任何解决我的问题的方法。

  • 问题内容: 获取目录中所有文件的列表的最佳方法是什么,按日期排序[创建| 修改],在Windows机器上使用python? 问题答案: 这@Greg Hewgill是答案的更详细的版本。这是最符合问题要求的。它区分了创建日期和修改日期(至少在Windows上如此)。 例:

  • 问题内容: 我需要对一个包含每个人年龄的数组列表进行排序,但是我必须打印出一个65岁以上的人的列表。我知道如何用SQL而不是Java来做到这一点。任何帮助,将不胜感激。谢谢! 问题答案: 首先,请确保您已充分说明了问题,然后考虑首先要使用的算法(不是特定于语言的);然后实施算法。 如果问题仅在于列出年龄在65岁以上(不是65岁或65岁以上)的所有人员,则只需要遍历该数组,并针对每一行检查年龄是否符