我试图在以下代码中更改排序方法,以排序任何类型的对象,而不仅仅是字符串,但有点难过,欢迎所有建议。
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]);
}
}
答案 0 :(得分:5)
将SortNames
变为SortNames<T extends Comparable<? super T>>
,然后将String[]
更改为T[]
,这就是Collections.sort()
的工作方式:
public class SortNames<T extends Comparable<? super T>> {
public 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 = s[i]; s[i] = s[j]; s[j] = t;
}
}
}
}
// or static <T extends Comparable<? super T>> void, for static methods
}
答案 1 :(得分:3)
如果要对数组进行排序,可以使用Arrays.sort(yourArray);
。
如果你真的想用你的算法重新实现它(假设它有效),你只需要改变一些东西:
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;
}
}
}
}
答案 2 :(得分:0)
你接受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]);
}
}
答案 3 :(得分:0)
class City {
public static void main (String args[])
{
int i,j;
String temp;
String s[] = new String[6];
for(i=0; i<6; i++)
s[i]=args[i];
for(i=0;i<6;i++) {
for(j=0;j<6-i-1;j++) {
if(s[j].compareTo(s[j+1])>0)
{
temp=s[j];
s[j]=s[j+1];
s[j+1]=temp;
}
}
}
for(i=0; i<6; i++) {
System.out.println(s[i]);
}
}
}
这个概念可以用来排序任何6个字符串(字符串的数量可以由程序员增加)
答案 4 :(得分:-3)
您只需要实现与您需要排序的对象的类似接口,并对上面的代码进行一些更改,以使此代码可用于任何其他对象。
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]);
}
}