java数组排序Arrays.sort,以及结合Comparator

系统 1613 0
Sorting an Array

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]

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

示例:

    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");
		}
	}
}

  


运行结果:

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


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论