java数组排序Arrays.sort,以及结合Comparator接口的用法

[color=darkblue][b][size=medium]Sorting an Array[/size][/b][/color]

1. 数字排序 int[] intArray = new int[] { 4, 1, 3, -23 };
Arrays.sort(intArray);
输出: [-23, 1, 3, 4]
2. 字符串排序,先大写后小写 String[] strArray = new String[]{ "z", "a", "C" };
Arrays.sort(strArray);
输出: [C, a, z]
3. 严格按字母表顺序排序,也就是忽略大小写排序 Case-insensitive sort
Arrays.sort(strArray, String.CASE_INSENSITIVE_ORDER);
输出: [a, C, z]
4. 反向排序, Reverse-order sort
Arrays.sort(strArray, Collections.reverseOrder());
输出:[z, a, C]
5. 忽略大小写反向排序 Case-insensitive reverse-order sort
Arrays.sort(strArray, String.CASE_INSENSITIVE_ORDER);
Collections.reverse(Arrays.asList(strArray));
输出: [z, C, a]

[b][color=red][size=medium]对于整数、字符串排序,jdk提供了默认的实现,如果要对一个对象数组排序,则要自己实现java.util.Comparator接口。[/size][/color][/b]

示例:

import java.util.Arrays;
import java.util.Comparator;

class Cat {
private String name;
private float weight;

public Cat(String name, float weight) {
setName(name);
setWeight(weight);
}

public Cat() {

}

public String getName() {
return name;
}

public float getWeight() {
return weight;
}

public void setName(String name) {
this.name = name;
}

public void setWeight(float weight) {
this.weight = weight;
}
}

//创建一个比较器
class ByWeightComparator implements Comparator {
public final int compare(Object c1, Object c2) {
if(((Cat)c1).getWeight() > ((Cat)c2).getWeight()) {
return 1;
} else if(((Cat)c1).getWeight() == ((Cat)c2).getWeight()) {
return 0;
} else return -1;
}
}

public class CatArrSortTest {
public static void main(String[] args) {
Cat c1 = new Cat("w", 100);
Cat c2 = new Cat("d", 50);
Cat c3 = new Cat("a", 80);
Cat[] c = new Cat[]{c1, c2, c3};

System.out.println("排序前:");
for( Cat c4 : c) {
System.out.print(c4.getName() + "," + c4.getWeight() + "\t");
}

Arrays.sort(c, new ByWeightComparator());

System.out.println("\n排序后:");
for( Cat c4 : c) {
System.out.print(c4.getName() + "," + c4.getWeight() + "\t");
}
}
}


运行结果:
[img]http://dl.iteye.com/upload/attachment/281896/58d7175d-75c2-3b37-bc9e-2e7965f94524.jpg[/img]
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值