java 排序

1 对象自然排序
第一种方式 排序对象必须实现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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值