如何在java中使用泛型比较器对ArrayList进行排序?
我想编写一个通用的comparator类来对我的ArrayList进行排序。为了做到这一点,我应该在静态类ElementComparator的比较函数中写些什么如何在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
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在撰写问题时,这是一个打字错误:)