对任何类型的对象进行排序,java

对任何类型的对象进行排序,java,java,arrays,sorting,Java,Arrays,Sorting,我正在尝试更改下面代码中的排序方法,以对任何类型的对象进行排序,而不仅仅是字符串,但有点难懂,欢迎所有建议 class SortNames { static void sort(String[] s) { for (int i = 0; i<s.length; i++) { for (int j = i+1; j < s.length; j++) { if (s[i].compareTo(s[j])>0) {

我正在尝试更改下面代码中的排序方法,以对任何类型的对象进行排序,而不仅仅是字符串,但有点难懂,欢迎所有建议

class SortNames {

static void sort(String[] s) {
    for (int i = 0; i<s.length; i++) {
        for (int j = i+1; j < s.length; j++) {
            if (s[i].compareTo(s[j])>0) {
                String t;
                t = s[i]; s[i] = s[j]; s[j] = t;
            }
        }
    }
}

public static void main(String[] args) {
    String[] names = {"Pete","Jill","May","Anne","Tim"};             
    sort(names);
    for (int i=0; i<names.length; i++) 
        System.out.println(names[i]);
}
}
class-SortNames{
静态无效排序(字符串[]s){
对于(int i=0;i0){
字符串t;
t=s[i];s[i]=s[j];s[j]=t;
}
}
}
}
公共静态void main(字符串[]args){
String[]name={“Pete”、“Jill”、“May”、“Anne”、“Tim”};
排序(名称);

对于(int i=0;i将
SortNames
转换为
SortNames将
SortNames
转换为
SortNames您只需实现与对象的可比接口,您需要对该对象进行排序,并对上述代码进行一些更改,以使该代码可用于任何其他对象

class SortNames {

static void sort(Comparable[] s) {
    for (int i = 0; i<s.length; i++) {
        for (int j = i+1; j < s.length; j++) {
            if (s[i].compareTo(s[j])>0) {
                Comparable t;
                t = s[i]; s[i] = s[j]; s[j] = t;
            }
        }
    }
}

public static void main(String[] args) {
    String[] names = {"Pete","Jill","May","Anne","Tim"};             
    sort(names);
    for (int i=0; i<names.length; i++) 
        System.out.println(names[i]);
}
}
class-SortNames{
静态无效排序(可比[]s){
对于(int i=0;i0){
可比t;
t=s[i];s[i]=s[j];s[j]=t;
}
}
}
}
公共静态void main(字符串[]args){
String[]name={“Pete”、“Jill”、“May”、“Anne”、“Tim”};
排序(名称);

对于(inti=0;i您只需要实现对象的可比较接口,您需要对该对象进行排序,并对上述代码进行一些更改,以使该代码可用于任何其他对象

class SortNames {

static void sort(Comparable[] s) {
    for (int i = 0; i<s.length; i++) {
        for (int j = i+1; j < s.length; j++) {
            if (s[i].compareTo(s[j])>0) {
                Comparable t;
                t = s[i]; s[i] = s[j]; s[j] = t;
            }
        }
    }
}

public static void main(String[] args) {
    String[] names = {"Pete","Jill","May","Anne","Tim"};             
    sort(names);
    for (int i=0; i<names.length; i++) 
        System.out.println(names[i]);
}
}
class-SortNames{
静态无效排序(可比[]s){
对于(int i=0;i0){
可比t;
t=s[i];s[i]=s[j];s[j]=t;
}
}
}
}
公共静态void main(字符串[]args){
String[]name={“Pete”、“Jill”、“May”、“Anne”、“Tim”};
排序(名称);

对于(inti=0;i您正在接受String[]对方法进行排序,那么它将永远不会是泛型的

 static void sort(String[] s)
您认为集合的排序方法有什么优势吗

public static <T extends Comparable<? super T>> void sort(List<T> list) {
    Object[] a = list.toArray();
    Arrays.sort(a);
    ListIterator<T> i = list.listIterator();
    for (int j=0; j<a.length; j++) {
        i.next();
        i.set((T)a[j]);
    }
  }

publicstatic您接受String[]对方法进行排序,然后它将永远不会是泛型的

 static void sort(String[] s)
您认为集合的排序方法有什么优势吗

public static <T extends Comparable<? super T>> void sort(List<T> list) {
    Object[] a = list.toArray();
    Arrays.sort(a);
    ListIterator<T> i = list.listIterator();
    for (int j=0; j<a.length; j++) {
        i.next();
        i.set((T)a[j]);
    }
  }

publicstatic如果要对数组进行排序,可以使用
arrays.sort(yourray);

如果你真的想用你的algo重新实现它(假设它能工作),你只需要改变几件事:

static <T extends Comparable<? super T>> void sort(T[] s) {
    for (int i = 0; i < s.length; i++) {
        for (int j = i + 1; j < s.length; j++) {
            if (s[i].compareTo(s[j]) > 0) {
                T t;
                t = s[i];
                s[i] = s[j];
                s[j] = t;
            }
        }
    }
}

static如果要对数组进行排序,可以使用
arrays.sort(yourray);

如果你真的想用你的algo重新实现它(假设它能工作),你只需要改变几件事:

static <T extends Comparable<? super T>> void sort(T[] s) {
    for (int i = 0; i < s.length; i++) {
        for (int j = i + 1; j < s.length; j++) {
            if (s[i].compareTo(s[j]) > 0) {
                T t;
                t = s[i];
                s[i] = s[j];
                s[j] = t;
            }
        }
    }
}
static
class城市{
公共静态void main(字符串参数[])
{ 
int i,j;
字符串温度;
字符串s[]=新字符串[6];
对于(i=0;i
类城市{
公共静态void main(字符串参数[])
{ 
int i,j;
字符串温度;
字符串s[]=新字符串[6];

对于(i=0;i1.您至少应该将作用域缩小到可比较的对象。2.您尝试过哪些不起作用的方法?没有太多可更改的地方。我不清楚。您说的是任何类型,但您只传递并执行字符串操作。此外,除非这是某种练习,否则我将使用
集合。排序
。仅字符串排序?make一些清晰的…@davary字符串到ASCII转换1.您至少应该将范围缩小到可比较的对象。2.您尝试了哪些不起作用的内容?没有太多的更改。我不清楚。您说的是任何类型,但您只传递和执行字符串操作。此外,除非这是某种练习,否则我将使用
列selections.sort
。仅字符串排序?请澄清…@davary字符串到ASCII的转换问题。应该有可比较的[]替换对象[]。更正。抱歉。应该有可比较的[]替换对象[].corrected.String t;存在问题。将其更改为Comparable t。您应该知道问题所在。我没有仔细查看您的代码。我只是执行了排序过程。将String t更改为Comparable.sorry。应该有Comparable[]代替object[]。corrected.sorry。应该有Comparable[]代替object[].corrected.String t;存在问题。将其更改为Comparable t。您应该知道问题所在。我没有仔细查看您的代码。我只是执行排序过程。将String t更改为Comparable。