zl程序教程

您现在的位置是:首页 >  后端

当前栏目

Java中的2种集合排序方法介绍

2023-06-13 09:15:28 时间

直接上代码:

importjava.util.ArrayList;
importjava.util.Collections;
importjava.util.Comparator;
importjava.util.List;

/**
*
*<p>
*ClassNameCollectionsSort
*</p>
*<p>
*Description主要介绍两种集合的排序算法<br/>
*第一:java.util.Collections.sort(java.util.List),要求所排序元素必须实现java.lang.Comparable接口<br/>
*第二:java.util.Collections.sort(java.util.List,java.util.Comparator),这个方法要求实现java.util.Comparator接口<br/>
*第三:下面的例子使用的是对int型属性排序,对String属性排序可以使用以下方法<br/>
*publicintcompareTo(Cato){returnthis.getName().compareTo(o.getName(0);}<br/>
*第四:compareTo()函数的说明<br/>
*如果结果;<br/>
*<0a<b;<br/>=
*==0a==b;<br/>
*>=0a>b;
*</p>
*
*@authorwangxuwangx89@126.com
*<p>
*Date2014-9-16下午04:52:57
*</p>
*@versionV1.0
*
*/

publicclassCollectionsSort{
	publicstaticvoidmain(String[]args){
		//method1();测试第一个方法
		method2();//测试第二个方法
	}

	publicstaticvoidmethod1(){
		List<Cat>list=newArrayList<Cat>();
		Catc=newCat("a",10);
		list.add(c);
		c=newCat("b",20);
		list.add(c);
		c=newCat("c",3);
		list.add(c);
		//升序排列输出
		Collections.sort(list);
		System.out.println(list);
		//降序排列输出
		Collections.sort(list,Collections.reverseOrder());
		System.out.println(list);
	}

	publicstaticvoidmethod2(){
		List<Cat>list=newArrayList<Cat>();
		Catc=newCat("a",10);
		list.add(c);
		c=newCat("b",20);
		list.add(c);
		c=newCat("c",3);
		list.add(c);
		Comparator<Cat>catComparator=newCat();
		//升序排列输出
		Collections.sort(list,catComparator);
		System.out.println(list);
		//降序排列输出
		catComparator=Collections.reverseOrder(catComparator);
		Collections.sort(list,catComparator);
		System.out.println(list);
	}
}

classCatimplementsComparable<Cat>,Comparator<Cat>{
	privateintage;
	privateStringname;

	publicCat(){
	}

	publicCat(Stringname,intage){
		this.age=age;
		this.name=name;
	}

	publicintgetAge(){
		returnthis.age;
	}

	publicStringgetName(){
		returnthis.name;
	}

	publicvoidsetAge(intage){
		this.age=age;
	}

	publicvoidsetName(Stringname){
		this.name=name;
	}

	//实现了Comparable接口,不要重写该方法
	@Override
	publicintcompareTo(Cato){
		//TODOAuto-generatedmethodstub
		returnthis.age-o.age;
	}

	@Override
	publicStringtoString(){
		//TODOAuto-generatedmethodstub
		return"名字:"+getName()+",年龄:"+getAge();
	}

	//实现了Comparator接口,需要重写该方法
	@Override
	publicintcompare(Cato1,Cato2){
		//TODOAuto-generatedmethodstub
		returno1.getAge()-o2.getAge();
	}

}