如何排序List <object []>?</object []>

时间:2014-05-29 14:08:02

标签: java arrays comparator

我需要按List<Object[]>值排序Object[3]。这可能吗? Comparator应该如何?

我不知道如何制作它......我已经通过简单的比较器实现检查了这一点,但它失败了..

提前致谢

2 个答案:

答案 0 :(得分:0)

Object[]的简单比较器看起来像这样。比较标准取决于您要做的事情。事实上,比较对象数组并不是那么简单,也许您应该尝试使用其他数据结构来实现您想要实现的任何目标。尽管如此:

public class ObjectArrayComparator implements Comparator<Object[]> {
    public int compare(Object[] o1, Object[] o2) {
        // ...
        return ...;
    }
}

另请参阅Comparator以获取有关其行为方式的更多信息。

答案 1 :(得分:0)

您仍然需要定义如何比较对象,但有一些方法可以这样做

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class Sorter {

    class Wrapper implements Comparable{
        Object[] array;

        /* (non-Javadoc)
         * @see java.lang.Comparable#compareTo(java.lang.Object)
         */
        @Override
        public int compareTo(Object o) {
            Object o1 = array[3];

            //replace the code here with the result of the comparison between o1 and o
            //some example here

            return o1.toString().compareTo(o.toString());
        }
    }

    /**
     * @param args
     */
    public static void main(String[] args) {
        Sorter s = new Sorter();

        List<Wrapper> list = new ArrayList<Wrapper>();

        Object[] arr1 = new Object[4];
        arr1[0] = "abc1";
        arr1[1] = "def1";
        arr1[2] = "ghi1";
        arr1[3] = new Integer(2);

        Wrapper w1 = s.new Wrapper();
        w1.array = arr1;

        Object[] arr2 = new Object[4];
        arr2[0] = "abc2";
        arr2[1] = "def2";
        arr2[2] = "ghi2";
        arr2[3] = new Integer(1);

        Wrapper w2 = s.new Wrapper();
        w2.array = arr2;

        list.add(w1);
        list.add(w2);

        Collections.sort(list,new Comparator<Wrapper>(){

            @Override
            public int compare(Wrapper o1, Wrapper o2) {
                return o1.compareTo(o2);
            }
        });

        System.out.println(list.get(0).array[3]);

    }

}