java中 Arrays.sort()这个函数 我想用它API中提供的sort(T[] a, Comparator<? super T> c)

import java.util.Arrays;
import java.util.Comparator;
public class array {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int [] arr=new int[10];
com c=new com<Integer>();
//Integer a=new Integer(5);

int len=arr.length;
for(int i=0;i<len;i++)
{
arr[i]=5-i;
}
// Arrays.sort(ArrayList<in>(arr),new com());
arr=Arrays.sort(arr,c);

for(int a : arr)
{
System.out.println(a);
}
}

}
import java.util.Comparator;

public class com<T> implements Comparator<T>
{
public int compare(T o1, T o2) {
int i = Integer.parseInt(String.valueOf(o1));
int j = Integer.parseInt(String.valueOf(o2));
if (i > j)
return -1;
if (i < j)
return 1;
return 0;
}
}

楼主,你的程序思想没有错,只是在细节问题上出错了,
在使用泛型时注意:任何基本类都不能作为类型参数。虽然从Java SE 5.0开始使用了自动包装机制,包装机制解决了一些问题,但不是所有问题都能解决。
自动包装机制不能用于数组,因此无法工作。
至于Comparator和Comparable接口,给你一个简单的区分 ,Comparator接口是比较器,comparable 接口(能比较的,也就是默认的比较器比较,自然顺序)。
比较此对象与指定对象的顺序。如果该对象小于、等于或大于指定对象,则分别返回负整数、零或正整数。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-04-27
import java.util.Arrays;
import java.util.Comparator;

public class ArraySort {
public static void main(String[] args) {
Integer[] arr=new Integer[10];
Comp<Integer> c=new Comp<Integer>();

int len=arr.length;
for(int i=0;i<len;i++){
arr[i]=5-i;
}
Arrays.sort(arr,c);

for(Integer a : arr){
System.out.println(a);
}
}
}

class Comp<T> implements Comparator<T>{
public int compare(T o1, T o2) {
return ((Integer)o1).compareTo( (Integer)o2 );
}
}追问

我想知道为什么我的方法不行呢?

追答

是同样的方法。

相似回答