Java – 排序01(引用类型中的内置类型)
一.Comparable 接口
二.Comparator 接口(比较器)
public class StringCamp implements Comparator<String>{
@Override
public int compare(String o1, String o2) {
int len1 = o1.length();
int len2 = o2.length();
return len1 - len2;
}
}
/**
* 数组排序 + Comperator,降序
*
*/
public static void sort(Object[] arr, Comparator com)
{
boolean sorted = true;
int len = arr.length;
for (int j = 0; j < len - 1; j++) {
sorted = true;
for (int i = 0; i < len - 1 - j; i++) {
if (com.compare(arr[i],arr[i + 1]) < 0)
{
Object temp = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = temp;
sorted = false;
}
}
if (sorted) {
break;
}
}
}
public static void main(String[] args) {
String[] arr1 = {"adaf","aagbl","ceghl"};
sort(arr1,new StringCamp());//根据字符串长度降序排序
System.out.println(Arrays.toString(arr1));
}
三.Collections(类)
1.可以额外提供业务排序类,实现Comparator接口,重写其下的compare方法
public static <T> void sort(List<T> list, Comparator<? super T> com)
public class CollectionsDemo {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("a");
list.add("c");
list.add("d");
list.add("e");
list.add("b");
Collections.sort(list,new StringCamp());
System.out.println(list.toString());
}
}
2.使用实体类实现lang包下的comparable接口,重写compare to 方法
public static <T extends Comparable<? super T>> void sort(List<T> list)
public class CollectionsDemo {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("a");
list.add("c");
list.add("d");
list.add("e");
list.add("b");
Collections.sort(list);
System.out.println(list.toString());
}
}