java - 根据值排序数组列表

标签 java sorting arraylist collections

这是实际情况。有一个VO

Name Usagecount  returncount number
A   0       0       123
B   1       1           234
C   0       2       345
D   2       3       546

首先,它应该根据使用次数降序排列。如果找到相同的使用计数,则应根据返回代码按升序排序。如果找到相同的返回计数,则应按数字升序排序。 当我尝试下面的代码片段时

public class SomeComparator implements Comparator<SomeVO> {
        @Override
        public int compare(SomeVO o1, SomeVO o2) {
            int value1 = o2.getUsageCount().compareTo(o1.getUsageCount());
            if (value1 == 0) {
                int value2 = o1.getNumberofReturns().compareTo(o2.getNumberofReturns());
                if (value2 == 0) {
                    return o1.getNumber().compareTo(o2.getNumber());
                } else {
                    return value2;
                }
            }
            return value1;
        }
    }

我得到输出 D、B、C,但我期望它是 D、B、A、C。

最佳答案

没有。您应该能够在您的 Comparator(或 Comparable)实现中实现所有排序逻辑。

例如(伪代码):

  • 按颜色比较(显然是按字典顺序,即您的示例将“黑色”放在“黑色”之前)
  • 如果相等,按座位比较

您的 Collections.sort 调用将根据您在 comparecompareTo 中的逻辑执行适当的排序。

关于java - 根据值排序数组列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35428897/

相关文章:

java - 为什么要使用 getter 和 setter/accessor?

java - Android 应用程序在模拟器中运行但在设备中失败

c# - 按元素长度对字符串数组进行排序

java - 数组 : selection sort doesn't display

java - 使用 GSON 将两个 ArrayList 转换为 JSON

java - 从 Firebase 检索值并显示在 EditText 中

java - java中的日历在更改时区时返回相同的日期?

Java:数组逆序排序方法

java - 从文本文件读取字符串值到 Java 中的 java arraylist

java - 将实体从另一个微服务引用到 jdl-jhipster