我有以下收藏:
Collection<AgentSummaryDTO> agentDtoList = new ArrayList<AgentSummaryDTO>();
其中AgentSummaryDTO
看起来像这样:
public class AgentSummaryDTO implements Serializable {
private Long id;
private String agentName;
private String agentCode;
private String status;
private Date createdDate;
private Integer customerCount;
}
现在我必须根据customerCount
字段对集合agentdolist
进行排序,如何实现这一点?
看看比较器和集合类。
一种简单的方法是在AgentSummaryDTO
中实现可比接口,然后将列表传递给Collections.sort()
。
如果无法将AgentCommand编辑为
,则需要一个比较器,如下所示:如何对列表排序
Jiri Kremser的答案可以进一步简化,这真的是完整Java8种方法:
Collections.sort(agentDtoList, Comparator.comparing(AgentSummaryDTO::getCustomerCount));
这只是通过整数字段进行比较,并且由于整数
实现了可比较
,因此效果良好。
一个更干净的解决方案可能是使用内置的比较Int()
方法:
Collections.sort(agentDtoList, Comparator.comparingInt(AgentSummaryDTO::getCustomerCount));
当然,通过静态导入sort
和comparingit
,这可以表达得更短:
sort(agentDtoList, comparingInt(AgentSummaryDTO::getCustomerCount));
这是我的"1liner":
Collections.sort(agentDtoList, new Comparator<AgentSummaryDTO>(){
public int compare(AgentSummaryDTO o1, AgentSummaryDTO o2){
return o1.getCustomerCount() - o2.getCustomerCount();
}
});
Java 8的更新:对于int数据类型
Collections.sort(agentDtoList, (o1, o2) -> o1.getCustomerCount() - o2.getCustomerCount());
甚至:
Collections.sort(agentDtoList, Comparator.comparing(AgentSummaryDTO::getCustomerCount));
对于字符串数据类型(如注释中)
Collections.sort(list, (o1, o2) -> (o1.getAgentName().compareTo(o2.getAgentName())));
…它希望getterAgentSummaryDTO。getCustomerCount()
问题内容: 我有以下收藏: 当这个样子的: 现在我必须根据字段对集合进行排序,如何实现呢? 问题答案: 这是我的“ 1班轮”: Java 8的更新:对于int数据类型 甚至: 对于String数据类型(如注释中所示) ..它期望吸气剂
我试图写一个函数来排序一个对象集合。由于对象都是相同的类型(相同的用户定义类),因此它们的属性集是相同的。是否有可能(通过代码)发现对象的属性,以便将集合放在一个二维数组中,每行代表一个对象,每列代表它的一个属性? 另一种解决方案是将集合中的每个对象复制到对象数组中,并根据它们的一个属性对它们进行排序,该属性的名称作为字符串传递给函数。但是我不知道如何使用作为字符串传递的属性名来指向对象的属性。
问题内容: 假设我有两个类CLassA和CLassB。它们有一个共同的属性,例如每个类拥有的元素数量。 我如何从ClassA和CLassB的对象创建一个集合,并按该属性排序(降序升序无所谓)? 我收集了一个类型,但是当我尝试实现Comparable Interface时,我无法使用该方法(例如,获取返回元素nr的get)。 我有什么解决方案? 谢谢你的帮助! 问题答案: 实际上,如果要将它们放在同
问题内容: 如何按其字段之一(例如或)对对象数组进行排序? 问题答案: 使用usort,这是从手册改编而成的示例: 您还可以将任何callable用作第二个参数。这里有些例子: 使用匿名函数(来自PHP 5.3) 从班级内部 使用箭头函数(来自PHP 7.4) 另外,如果要比较数字值,则应使用“比较”功能。
问题内容: 我有一个Java对象列表,希望根据多个字段进行排序。 是否可以使用或接口根据多个字段对列表进行排序?我看到的所有示例仅根据一个领域进行排序。换句话说,可以按“校园”或“教师”或“建筑”进行排序。我想按“校园”,“教师”,“建筑”(因为它在SQL中存在)进行排序 问题答案: 您的比较器如下所示: 基本上,只要到目前为止已比较的属性相等(),它就会继续比较类的每个连续属性。
当我对它进行降序排序时,它应该首先显示Parent3,因为它有一个Z。这是我当前的hql,它得到了1>2>3的错误结果: 如果没有distinct,尽管它选择了多个相同的父级,但它仍然很好。 我有一个模型设置如下: 编辑:在集合中按HQL顺序对其进行排序,尽管当双亲具有相同的children.name值时,它不会比较下一个可能的值。即。 如果Parent1有孩子abba,zeon Parent2有