四、冒泡+排序
package mypro01; import java.util.Arrays; import java.util.List; public class Utils { public static <T extends Comparable<T>> void sort(List<T> list) { Object[] arr=list.toArray();//转化成数组 sort(arr); for (int i=0;i<arr.length;i++) { list.set(i, (T) arr[i]); } } public static <T extends Comparable<T>> void sort(T[] arr) { boolean blag=false; for (int j=0;j<arr.length-1;j++) { System.out.println("第"+(j+1)+"遍"); for(int i=0;i<arr.length-1-j;i++) { System.out.println("第"+(i+1)+"趟"); if(((Comparable)arr[i]).compareTo(arr[i+1])>0) { T temp=arr[i]; arr[i]=arr[i+1]; arr[i+1]=temp; blag=true; } } if(!blag) { break; } } } public static void sort(Object[] arr) { boolean blag=false; for (int j=0;j<arr.length-1;j++) { System.out.println("第"+(j+1)+"遍"); for(int i=0;i<arr.length-1-j;i++) { System.out.println("第"+(i+1)+"趟"); if(((Comparable)arr[i]).compareTo(arr[i+1])>0) { Object temp=arr[i]; arr[i]=arr[i+1]; arr[i+1]=temp; blag=true; } } if(!blag) { break; } } } }
调用
package mypro01;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class collection_sort {
public static void main(String[] args) {
List<String> list=new ArrayList<String>();
list.add("a");
list.add("avb");
list.add("dsdf");
Utils.sort(list);
System.out.println(list);
String[] arr={"a","acv","adc","ab"};
Utils.sort(arr);
System.out.println(Arrays.toString(arr));
}
}
第1遍
第1趟
第2趟
[a, avb, dsdf]
第1遍
第1趟
第2趟
第3趟
第2遍
第1趟
第2趟
第3遍
第1趟
[a, ab, acv, adc]
结果
排序的实体类都实现了java.lang.Comparable接口,在这个接口中只有一个方法,compareTo(Object obj);在比较中可以用Comparator接口中的compare方法;最后,这两个方法都是在collections接口中,一个是<list>,一个是(list,comparator)