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

如何排序基于重复字段的对象列表?

韩朝斑
2023-03-14

我有以下Java POJO

public class Game  {

    public Game(){} 

    private String id;

    private String startDate = "";
}

如何实现在游戏对象列表中确定重复字段的功能?

例如,当两个游戏有相同的开始日期?

我以前使用过comparator,但仅在根据最早日期等对对象进行排序时使用过,但它能否用于对重复项进行排序?

共有3个答案

裴浩歌
2023-03-14

只要startDate是私有的,比较器就可能无法访问该字段。众所周知的方法equals()可以被覆盖,但如果您想检查对象是否符合不同的相等标准,这是不够的。

但是您可以实现一个getter,它将向比较器提供start Date。或者你可以imement方法布尔isSameDateAs(游戏其他),将返回true为重复。

万俟旭
2023-03-14

如果想找到“重复”条目,请对元素进行分组,并查找大小相同的组

在Java8中,这就像:

games
    .stream()
    .collect(Collectors.groupingBy(Game::getStartDate))
    .values()
    .stream()
    .filter(group -> group.size() > 1)
    .map(group -> group.get(0))
    .collect(Collectors.toList());
龙令
2023-03-14

比较器。。。它能用于对重复项进行排序吗?

是的。当compareTo返回0时,它将所有相等的元素组合在一起。

确定游戏对象列表中的重复字段?

做一个比较器

if (game1.startDate.equals(game2.startDate)) return 0;

顺便说一下,您可能希望使用某种类型的LocalDateTime对象,而不是字符串。然后你就可以实际订购日期/时间了

 类似资料:
  • 我试图实现对存储在列表中的对象字段值的排序。 我找到了下面的解决方案来比较字符串,但是我如何比较字符串值并相应地排序? 我想先排序"Y"状态值然后"N"

  • 假设我们有: 我们有一个实例列表,即

  • 问题内容: 这个问题已经在这里有了答案 : 如何根据对象的属性对对象列表进行排序? (8个答案) 1年前关闭。 我有一个看起来像这样的对象列表。 Card(10,’H)在这里不是元组,而是对象。我知道如果列表中的每个项目都是元组形式的,如何对列表进行排序,就像这样, 但我不知道如何对对象列表进行排序。我想按第一个输入值(即Card()中的数字)对列表进行排序 我怎样才能做到这一点? 编辑:这是Ca

  • 我有一个小问题,希望你能帮我解决。 我有一个名为Entity的类,它有几个属性,其中两个属性是id和实用程序: 然后,我在ArrayList中有几个Entity对象,如下所示: 现在,我想根据公用事业实体对列表进行排序。我使用一个定制的比较器,尝试了几种类似我在这里读到的解决方案: 但是在这条线上: 我遇到了以下错误:int不能被解引用,我不知道如何修复它。你们能帮我解决这个问题或者给出另一个解决

  • 我有两个具有一对多关系的实体,它们通过复合主键连接在一起。由于Spring Data为oracle数据库生成错误计数不同的查询,我SQL笛卡尔连接的输出,这导致每一行子对象都重复父对象的行。我需要找出基于复合键的不同的父对象,然后在列表中为父对象添加每个子对象,并将其设置为父对象的属性 我能够根据父对象的组合键找到不同的父对象。以下是相关代码 假设我有以下输入 我需要产生以下输出 这方面的任何帮助

  • 问题内容: 我正在创建一个JSON对象,其中添加了一个键和一个数组值。键和值的值都来自TreeSet,该树具有排序形式的数据。但是,当我在json对象中插入数据时,它会随机存储,没有任何顺序。当前是我的json对象: 我的代码是: 有什么方法可以将数据存储到while循环本身中的json对象中? 问题答案: 它与Google Gson API一起使用。试试看。