1 对象自然排序
第一种方式 排序对象必须实现Comparable接口
第二种方式 提供一个比较器
Arrays.sort(Object[] a)使用的是合并排序算法
Arrays.sort(int[] a)...基本类型的 使用的是快速排序算法
2 List排序
对象实现Comparable或者 提供比较器
下面就举提供比较器的例子
用的也是合并排序算法
大于内存的排序
http://yangyiqian.iteye.com/blog/743411
第一种方式 排序对象必须实现Comparable接口
import java.util.Arrays;
public class ComparableTest {
static class Comp implements Comparable<Comp> {
private int num;
public Comp() {
}
public Comp(int num) {
this.num = num;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public int compareTo(Comp anotherComp) {
return getNum() - anotherComp.getNum();
}
@Override
public String toString() {
return "Comp [num=" + num + "]";
}
}
public static <E> void paixu(E[] array) {
for (E e : array) {
System.out.println(e.toString());
}
}
public static void main(String[] args) {
Comp[] comps = new Comp[] { new Comp(12), new Comp(2), new Comp(79),
new Comp(11) };
Arrays.sort(comps);
paixu(comps);
}
}
第二种方式 提供一个比较器
import java.util.Arrays;
import java.util.Comparator;
public class ComparatorTest {
static class Comp {
private int num;
public Comp() {
}
public Comp(int num) {
this.num = num;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
@Override
public String toString() {
return "Comp [num=" + num + "]";
}
}
public static <E> void paixu(E[] array) {
for (E e : array) {
System.out.println(e.toString());
}
}
public static void main(String[] args) {
Comp[] comps = new Comp[] { new Comp(12), new Comp(2), new Comp(79),
new Comp(11) };
Arrays.sort(comps,new Comparator<Comp>() {
public int compare(Comp o1, Comp o2) {
return o1.getNum()-o2.getNum();
}
});
paixu(comps);
}
}
Arrays.sort(Object[] a)使用的是合并排序算法
Arrays.sort(int[] a)...基本类型的 使用的是快速排序算法
2 List排序
对象实现Comparable或者 提供比较器
下面就举提供比较器的例子
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import com.google.common.collect.Lists;
public class CollectionComparableTest {
static class Comp {
private int num;
public Comp() {
}
public Comp(int num) {
this.num = num;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
@Override
public String toString() {
return "Comp [num=" + num + "]";
}
}
private static <T> void paixu(List<T> comparables) {
for (T t : comparables) {
System.out.println(t.toString());
}
}
public static void main(String[] args) {
List<Comp> comps = Lists.newArrayList();
comps.add(new Comp(11));
comps.add(new Comp(1));
comps.add(new Comp(22));
comps.add(new Comp(56));
comps.add(new Comp(3));
Collections.sort(comps, new Comparator<Comp>() {
public int compare(Comp o1, Comp o2) {
return o1.getNum() - o2.getNum();
}
});
paixu(comps);
}
}
用的也是合并排序算法
大于内存的排序
http://yangyiqian.iteye.com/blog/743411