java关于List数组和类数组中的Collections和Arrays的sort区别

关于List数组和类数组中的Collections和Arrays的sort区别

总体上来说是酱紫的,Collections只要List定义的里面装的类数组,而Arrays都可以接受,据说Cllections可以装非List的,但是我没搞明白,详情见

https://www.cnblogs.com/zhumengdexiaobai/p/10459441.html比较器的总体思想
接下来是验证

(1)Arrays对上基础类数组,直接调用即可;

		int[] logo= {12,23,221,122};	
		Arrays.sort(logo);
		for(int i=0;i<logo.length;i++) {
			System.out.println(logo[i]);
		}

结果:
Arrays对上基础类数组的结果
(2)Collections.sort对上基础类数组


		ArrayList<Integer> num=new ArrayList<Integer>();
		num.add(11);
		num.add(1);
		num.add(78);
		Collections.sort(num);
		for(int i=0;i<num.size();i++) {
		System.out.println(num.get(i).intValue());
	}

结果:
在这里插入图片描述
(3)Arrays对其他的类数组排序

    Animal[] animal=new Animal[] {new Animal(1),new Animal(122),new Animal(491),new Animal(133),new Animal(891)};
	Arrays.sort(animal);
	for(Animal temp:animal) {
		System.out.println("id:"+temp.id);
	}

结果:

Arrays对其他的类数组排序
(4)Collections.sort对上其他类数组

    List<Animal> lago=new ArrayList<Animal>();
	lago.add(new Animal(123));
	lago.add(new Animal(145));
	lago.add(new Animal(156));
	lago.add(new Animal(134));
	lago.add(new Animal(178));
	Collections.sort(lago);
	for(int i=0;i<lago.size();i++)
	System.out.println(lago.get(i).id);
结果是:

Collections.sort对上其他类数组
除了基础类和String不需要有重定义的函数外(java内部已经帮忙定义过了),其他自己的类要定义,有两种方式,一种是类在定义的时候,就与comparable接口,第二种是已经定义了,没有接口,那么就要为这个类重新创建一个类<已定义的类>去接口comparator进行实现。
第一种:类在定义的时候,就与comparable接口,

class Animal implements Comparable<Animal>{
	int id;
	Animal(int id){
		this.id=id;
	}
	@Override
	public int compareTo(Animal arg0) {
		// TODO Auto-generated method stub
		
		return this.id>arg0.id?1:-1;
	}
	
}

第二种:重新创建一个类去接口comparator进行实现

class Card{
	char suit;
	char rank;
	double randomValue;
	Card(char aSuit,char aRank)
	{
		suit=aSuit;
		rank=aRank;
		randomValue=Math.random();
	}
	void dipaly()
	{		System.out.println( Character.toString(suit)+Character.toString(rank));
	}
}
 class conpareRandomValue implements Comparator<Card>{

	@Override
	public int compare(Card arg0, Card arg1) {
		// TODO Auto-generated method stub
		return arg0.randomValue>arg1.randomValue? 1:-1;
	}
	 
 }

定义后,都可以通过Collections.sort或者Arrays.sort进行分类

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值