Java中怎样将类对象自动排序,放入某个集合
java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaEE, JavaME, JavaSE)的总称。本站提供基于Java框架struts,spring,hibernate等的桌面应用、web交互及移动终端的开发技巧与资料
保持永久学习的心态,将成就一个优秀的你,来 继续搞起java知识。
需求:某一个类对象放入一个集合时,就按照类对象的参数(或者自定义的功能)自动排序,使用的时候不用另外调用集合的sort函数。
可以实现此功能的集合:TreeSet,TreeMap。
原理:这两个集合提供了相应的构造函数:
<b>TreeSet</b>
(Comparator<?super E>comparator)
<b>TreeMap</b>
(Comparator<?super K>comparator)
举例:
Set
newStringSizeComparator());classStringSizeComparator
implementsComparator
publicintcompare(HomeAutodeviceObjectNewarg0,HomeAutodeviceObjectNewarg1){
if((arg0.GetArributeValue(arg0.GetSortClusterID(),arg0.GetSortAttrID())-arg1.GetArributeValue(arg1.GetSortClusterID(),arg1.GetSortAttrID()))>0)
return1;elseif((arg0.GetArributeValue(arg0.GetSortClusterID(),arg0.GetSortAttrID())-arg1
.GetArributeValue(arg1.GetSortClusterID(),arg1.GetSortAttrID()))<0)
return-1;return0;
}
验证方法:
Iterator
while(it.hasNext()){HomeAutodeviceObjectNewtempdevice=it.next();
System.out.println(tempdevice.GetArributeValue(tempdevice.GetSortClusterID(),
tempdevice.GetSortAttrID())+
"..");
}
结果:按照属性的value值进行从小到大的排序。注意:Set会删除重复的对象,如果compare的return值为0,则会认为是同一个对象。
如果确实需要将数据相等的对象也放在set里,可以修改Comparator类:classStringSizeComparatorimplementsComparator
@Override
publicintcompare(HomeAutodeviceObjectNewarg0,HomeAutodeviceObjectNewarg1){
if((arg0.GetArributeValue(arg0.GetSortClusterID(),arg0.GetSortAttrID())-arg1
.GetArributeValue(arg1.GetSortClusterID(),arg1.GetSortAttrID()))>=0)
return1;
elseif((arg0.GetArributeValue(arg0.GetSortClusterID(),arg0.GetSortAttrID())-arg1
.GetArributeValue(arg1.GetSortClusterID(),arg1.GetSortAttrID()))<0)
return-1;
return0;
}
自动排序TreeSetTreeMapJava
因为水平有限,难免有疏忽或者不准确的地方,希望大家能够直接指出来,我会及时改正。一切为了知识的分享。
后续会有更多的精彩的内容分享给大家。
支付宝扫一扫
微信扫一扫
