Java中怎样将类对象自动排序,放入某个集合
来源:互联网 发布:mac怎么设置ppt母版 编辑:程序博客网 时间:2024/06/17 14:53
需求:某一个类对象放入一个集合时,就按照类对象的参数(或者自定义的功能)自动排序,使用的时候不用另外调用集合的sort函数。
可以实现此功能的集合: TreeSet ,TreeMap。
原理:这两个集合提供了相应的构造函数:
TreeSet
(Comparator<?superE> comparator)
TreeMap
(Comparator<?superK> comparator)
举例:
Set<HomeAutodeviceObjectNew>testSet = new TreeSet<HomeAutodeviceObjectNew>(
new StringSizeComparator());
classStringSizeComparatorimplements Comparator<HomeAutodeviceObjectNew>{
@Override
public intcompare(HomeAutodeviceObjectNew arg0, HomeAutodeviceObjectNew arg1) {
if((arg0.GetArributeValue(arg0.GetSortClusterID(), arg0.GetSortAttrID()) - arg1
.GetArributeValue(arg1.GetSortClusterID(), arg1.GetSortAttrID())) > 0)
return 1;
else if((arg0.GetArributeValue(arg0.GetSortClusterID(), arg0.GetSortAttrID()) - arg1
.GetArributeValue(arg1.GetSortClusterID(), arg1.GetSortAttrID())) < 0)
return -1;
return 0;
}
验证方法:
Iterator<HomeAutodeviceObjectNew>it = testSet.iterator();
while (it.hasNext()) {
HomeAutodeviceObjectNew tempdevice = it.next();
System.out.println(tempdevice.GetArributeValue(tempdevice.GetSortClusterID(),
tempdevice.GetSortAttrID()) + "..");
}
结果:按照属性的value值进行从小到大的排序。
注意:Set会删除重复的对象,如果compare 的return值为0,则会认为是同一个对象。
如果确实需要将数据相等的对象也放在set里,可以修改Comparator类:
classStringSizeComparator implements Comparator<HomeAutodeviceObjectNew>{
@Override
public intcompare(HomeAutodeviceObjectNew arg0, HomeAutodeviceObjectNew arg1) {
if((arg0.GetArributeValue(arg0.GetSortClusterID(), arg0.GetSortAttrID()) - arg1
.GetArributeValue(arg1.GetSortClusterID(), arg1.GetSortAttrID())) >=0)
return 1;
else if((arg0.GetArributeValue(arg0.GetSortClusterID(), arg0.GetSortAttrID()) - arg1
.GetArributeValue(arg1.GetSortClusterID(), arg1.GetSortAttrID())) < 0)
return -1;
return 0;
}
- Java中怎样将类对象自动排序,放入某个集合
- 将一个对象集合按照对象的某个字段排序
- Java中把对象放入ArrayList集合中实现方法
- Java中hashCode() equals() 与将对象放入集合或者说Map时要考虑的问题
- 使用反射机制将纯Java对象放入数据库中
- java怎么将字符串根据某个字符将字符串分解,并放入数组中
- java对象集合中某个属性的汉字进行按拼音进行排序
- java集合中对象排序
- Java集合中对象排序
- Java集合中对象排序
- Java集合按照对象的某个属性进行比较排序
- 在Java的Set集合中放入自定义类
- List集合按照对象中某个属性排序通用工具类(按对象中某属性排序)
- Java中如何将集合排序
- (三)JAVA利用反射机制将XML中的内容放入实体对象中
- 将字符串按照&切割并放入lsit集合中
- Map集合如何将value放入list中
- java 中对象集合的公用排序工具类
- 判断数据库是否是数字 isnumeric
- OS消息推送的工作机制 PUSH
- ReactiveCocoa2 源码浅析
- Python Network Programming(7)---泊松分布与发包
- JS无法调用Controller(已解决)
- Java中怎样将类对象自动排序,放入某个集合
- 给查询出的SQL记录添加序号列
- 装饰模式
- 又学一招—— Nullable<T>比较
- HIVE中数据更新(update)操作的实现
- 四个对策,应对裸辞大风险!
- Servlet Http 404
- RedHat6.4修改IP地址
- OpenStack Dashboard二次开发环境的搭建