java - 按内部对象(字符串、日期等)逆序对 ArrayList<Object[]> 进行排序

标签 java sorting arraylist

假设有一个ArrayList<Object[]>里面包含各种对象:

ArrayList<Object[]> list = new ArrayList<>();
list.add(new Object[]{"cat", (long)1422355945});
list.add(new Object[]{"dog", (long)1422355970});
list.add(new Object[]{"rat", (long)1422355900});

我们如何才能有效地按第一个Object对这个列表进行排序? (即 String )以相反的顺序?并在第二个Object做同样的事情(这是 long )?

最佳答案

只需创建一个比较器,类似于下面的示例:

    List<Object[]> list = new ArrayList<>();
    list.add(new Object[] { "cat", (long) 1422355945 });
    list.add(new Object[] { "dog", (long) 1422355970 });
    list.add(new Object[] { "rat", (long) 1422355900 });

    Collections.sort(list, new Comparator<Object[]>() {
        @Override
        public int compare(Object[] o1, Object[] o2) {
            int cmp1 = ((String) o1[0]).compareTo((String) o2[0]);
            if (cmp1 == 0) {
                return Long.compare((Long) o1[1], (Long) o2[1]);
            }
            return cmp1;
        }
    });

关于java - 按内部对象(字符串、日期等)逆序对 ArrayList<Object[]> 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28168818/

相关文章:

java - 尝试使用适配器内的变量设置背景颜色时出现 StringIndexOutofBoundsException

php - 从 mysql 数据库中发出一个多词的排序

JAVA:防止 ArrayList 的重复条目

java - com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException : Invalid byte 2 of 4-byte UTF-8 sequence (XML)

java - BlueJ 字符串条件错误

c - 如何将二维数组从最大到最小排序

java - 如何将关键对象(s3)的列表(包含特定字符串)过滤到新列表中

java - 何时在Java中通过ArrayList使用LinkedList?

java - Android:将参数传递给线程

c++ - Qt:不使用复制构造函数的qSort