我有一个主收款人对象排序基于收款人类别代码与字母顺序,现在我需要得到其他服务类别代码在排序列表的最后
应用排序后的列表
Financial and Insurance services
Government Sectors
Other Services
Telecommunications and Utilities
Transportation Services
所需列表如下
Financial and Insurance services
Government Sectors
Telecommunications and Utilities
Transportation Services
Other Services
需要将其他服务作为列表中排名最后一个 以下比较器用于对列表进行排序
Collections.sort(masterPayees, getCategoryNameComparatorByMasterPayee());
private Comparator<MasterPayee> getCategoryNameComparatorByMasterPayee() {
Comparator<MasterPayee> categoryNameComparatorByMasterPayee = new Comparator<MasterPayee>() {
public int compare(MasterPayee o1, MasterPayee o2) {
return (((MasterPayee) o1).getPayee_category().toString()
.compareToIgnoreCase(((MasterPayee) o2).getPayee_category().toString()));
}
};
return categoryNameComparatorByMasterPayee;
}
其他服务应该总是在排序列表的最后
如果您知道所有可以排序的值,则可以使用番石榴排序。
要创建比较器,您可以像这样规范您的值:
Ordering<String> ordering1 = Ordering.explicit("Financial and Insurance services","Government Sectors","Telecommunications and Utilities","Transportation Services","Other Services");
您还可以提供 List 和您的值作为 Ordering.explicit() 的
参数。
创建常量映射
试试这个:
Comparator<MasterPayee> categoryNameComparatorByMasterPayee = new Comparator<MasterPayee>(){
public int compare(MasterPayee o1, MasterPayee o2) {
if (((MasterPayee) o1).getPayee_category().toString().equalsIgnoreCase("Other Services") && ((MasterPayee) o1).getPayee_category().toString().equalsIgnoreCase(((MasterPayee) o2).getPayee_category().toString())) {
return 0;
}
else if (((MasterPayee) o1).getPayee_category().toString().equalsIgnoreCase("Other Services")) {
return 1;
}
else if (((MasterPayee) o2).getPayee_category().toString().equalsIgnoreCase("Other Services")) {
return -1;
}
else return (((MasterPayee) o1).getPayee_category().toString().compareToIgnoreCase(((MasterPayee) o2).getPayee_category().toString()));
}
};
它将具有“其他服务”的对象始终视为“更大”,从而使其出现在末尾。
问题内容: 是否有Java开源比较器可以按多个字段比较bean以进行多列排序?每列可以按升序或降序排序。 对于单列排序,可以与一起使用。 我知道编写此功能非常简单,但是如果已经编写并测试过轮子,那么重新发明轮子有什么好处? 问题答案: 我是几个月前写的。 只需从此类继承并重写doCompare-Method。然后使用设置链中的下一个比较器。比较器在此链中出现的越早,就越“重要”。 编辑: 另请参阅
我一直在做拼字游戏作业。我需要从列表中读取单词,然后读取每个字符并赋值,最终为每个单词分配一个总分。已经完成了!唷。现在我需要使用比较器将单词从最高分到最低分进行排序。读了很多,还是很迷茫。我知道我可以使用接口,但也有使用lambda表达式的比较器,这是我想去的方向。我只是不知道该怎么做。我需要比较每个单词的sumValue,然后按降序打印单词。 我创建了 2 个循环来读取单词 (i),然后是字符
问题:我试图检查我是否可以使用2个或更多标准对列表(数据类型对象的ArrayList)进行排序。请注意,我知道使用比较器和比较功能。我希望检查是否有方法使用2个或更多标准进行排序,而不必使用我可以轻松使用比较器功能的自定义数据类型。对于1个标准排序,以下代码有效。 在这种情况下,如果我执行以下操作,IntelliJ IDE会立即给出一个错误,表示o.get(3)的“无法解析方法”get(int)”
问题如下: 由一个固定数量的n个端到端连接的段组成的列表,每个段已经按升序排列。 我考虑过使用mergesort,基本情况是,如果等于n,那么返回并合并它们,因为我们已经知道它们是排序的,但是如果我有3个段,它将不起作用,因为我除以2,你不能将3个段平均分成两部分。 另一种方法类似于合并排序。所以我对每个段使用n个堆栈,如果L[i],我们可以识别它 如果你有主意的话,伪代码会很好。 编辑: 一个例
我有以下清单: 这是我的比较器函数: 我正在尝试使用它排序如下: 我不明白为什么第一个NaN不在列表的末尾。 我对升序排序列表的预期输出是: 我对降序排序列表的预期输出是: 在升序排序和降序排序的情况下,我希望NaNs在最后。 我知道sortwith使我们能够编写自己的比较器。有人能帮我吗?
问题内容: 我想使用比较器按降序对对象进行排序。 在这里,我想对一个Person对象数组进行排序。 我怎样才能做到这一点? 问题答案: 你可以使用这种方法来覆盖用户定义的类的降序方法,从而覆盖compare()方法, 或通过使用用户Prince在其评论中提到的降序进行排序。 你可以像这样进行升序排序, 我们用简洁的Lambda表达式(从Java 8开始)替换上面的代码: 从Java 8开始,Lis