欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-06-10 22:17:03
...

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

总体上来说是酱紫的,Collections只要List定义的里面装的类数组,而Arrays都可以接受,你以为Celletions很小气?不,List里面可以装很多类型的类数组,从这方面也可以。据说Cllections可以装非List的,但是我没搞明白,详情见

https://www.cnblogs.com/zhumengdexiaobai/p/10459441.htmljava关于List数组和类数组中的Collections和Arrays的sort区别
接下来是验证

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

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

结果:
java关于List数组和类数组中的Collections和Arrays的sort区别
(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());
	}

结果:
java关于List数组和类数组中的Collections和Arrays的sort区别
(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);
	}

结果:

java关于List数组和类数组中的Collections和Arrays的sort区别
(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);
结果是:

java关于List数组和类数组中的Collections和Arrays的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进行分类