如何在java中使用泛型比较器对ArrayList进行排序?

如何在java中使用泛型比较器对ArrayList进行排序?,java,generics,arraylist,comparator,Java,Generics,Arraylist,Comparator,我想编写一个通用的comparator类来对我的ArrayList进行排序。为了做到这一点,我应该在静态类ElementComparator的比较函数中写些什么 public static void main(String[] args) throws InterruptedException { Scanner sc = new Scanner(System.in); ArrayList<Integer> list = new ArrayList<Inte

我想编写一个通用的comparator类来对我的ArrayList进行排序。为了做到这一点,我应该在静态类ElementComparator的比较函数中写些什么

 public static void main(String[] args) throws InterruptedException {
    Scanner sc = new Scanner(System.in);

    ArrayList<Integer> list = new ArrayList<Integer>();
    list.add(-2);
    list.add(-1);
    list.add(10);

    Collections.sort(list,new ElementComparator());

    for (int i = 0; i < list.size(); i++) {
        System.out.println(list.get(i));
    }

}
static class ElementComparator <T extends Comparable<T>> implements Comparator <T> {


    @Override
    public int compare(T o1,  T o2) {

    }   
};
publicstaticvoidmain(String[]args)抛出InterruptedException{
扫描仪sc=新的扫描仪(System.in);
ArrayList=新建ArrayList();
增加(-2);
增加(-1);
增加(10);
sort(list,newelementcomparator());
对于(int i=0;i
您的泛型类型有一个公共基类-,因此您可以直接调用对象上的方法,它们应该调用该方法以获得比较结果

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

您要反转还是排序?也许是按降序排序,也就是按相反的顺序排序?它们是完全不同的东西。vs用作比较器。您是要反转元素的顺序,还是按降序排序?它们是完全不同的东西,但你的问题不清楚你想要什么。请编辑您的问题以明确您想要做什么。已编辑@波西米亚人仍然不清楚:“哪一个将对我的名单进行排序/反转”。。。是哪一个?排序还是反转?T2代表什么?@GCP,只是逐字复制OP发布的内容。这是一个打字错误,他似乎在说他想对元素进行反向排序。在这种情况下,我认为您应该使用
o2.compareTo(o1)
@JohnBollinger是的,您是对的。解决方案有效。谢谢all@GCP在撰写问题时,这是一个打字错误:)