利用比较接口实现List中的对象排序
2008-12-24 20:23
337 查看
2008年12月24日 多云 日本东京
今天修改了一个复杂的问题,问题的核心是在不同的条件下,要实现List中某些特定对象的优先处理,简单的说,就是在循环处理List中的对象时,对于某些满足组合条件的对象要优先处理。
经过对处理逻辑和目标对象的分析,决定对目标对象进行以下修改:
1.在目标对象类文件中追加特定条件的属性字段;
2.在目标对象做成时,对新追加的几个特定条件的属性字段值进行设定;
3.修改目标对象类中已经实现的IComparable接口的CompareTo()方法,让它在不同的条件下执行不同比较处理。对于特定条件的比较处理比较复杂,需要考虑的组合情况有21中之多,所以单独写了一个私有的比较方法,在CompareTo()方法中调用。
这样修改完成以后,把之前的优先对象的选择处理转化成了List中的对象排序处理,我们得到了以下的好处:
1.原有的选择List中对象的处理逻辑没有改变;
2.使用List的Sort方法方便快捷的实现了List中对象再排序,降低对性能的影响度;
3.由于List的Sort方法使用对象类中IComparable接口的CompareTo()方法来实现排序处理,所以我们只需关心两个对象的比较优先度的逻辑,对于对象的选择和排序逻辑不必关心,因而降低了代码的复杂度。
今天修改了一个复杂的问题,问题的核心是在不同的条件下,要实现List中某些特定对象的优先处理,简单的说,就是在循环处理List中的对象时,对于某些满足组合条件的对象要优先处理。
经过对处理逻辑和目标对象的分析,决定对目标对象进行以下修改:
1.在目标对象类文件中追加特定条件的属性字段;
2.在目标对象做成时,对新追加的几个特定条件的属性字段值进行设定;
3.修改目标对象类中已经实现的IComparable接口的CompareTo()方法,让它在不同的条件下执行不同比较处理。对于特定条件的比较处理比较复杂,需要考虑的组合情况有21中之多,所以单独写了一个私有的比较方法,在CompareTo()方法中调用。
这样修改完成以后,把之前的优先对象的选择处理转化成了List中的对象排序处理,我们得到了以下的好处:
1.原有的选择List中对象的处理逻辑没有改变;
2.使用List的Sort方法方便快捷的实现了List中对象再排序,降低对性能的影响度;
3.由于List的Sort方法使用对象类中IComparable接口的CompareTo()方法来实现排序处理,所以我们只需关心两个对象的比较优先度的逻辑,对于对象的选择和排序逻辑不必关心,因而降低了代码的复杂度。
相关文章推荐
- 利用比较接口实现List中的对象排序
- 利用比较接口实现List中的对象排序
- 日文,中文,韩文,利用Arrays.sort()对非英文排序,并与原值比较,返回(-1,0,1), 实现 Comparator接口, list 排序
- ArrayList和LinkedList都是实现了List接口的类,他们都是元素的容器,用于存放对象的引用; 他们都可以对存放的元素进行增删改查的操作,还可以进行排序。 但是,他们还是有区别的。
- C#中的IComparable 和 IComparer 接口,实现列表中的对象比较和排序
- 比较器的使用,实现 Comparable接口,功能:实现对象的多条件比较,排序
- 对象的比较与排序(三):实现IComparable<T>和IComparer<T>泛型接口
- 对象的比较与排序(三):实现IComparable<T>和IComparer<T>泛型接口
- [原创]详述IComparer,IComparable接口,实现自定义方法比较对象大小并排序(C#)
- Ilist排序,写一个对象比较的类,实现IComparer接口
- 用Collections.sort方法对list排序有两种方法 第一种是list中的对象实现Comparable接口,如下: [java] view plain copy /** * 根据ord
- 对象的比较与排序(二):实现IComparable和IComparer接口 和 Comparer类(转)
- 使用Comparable、Comparator接口实现对对象数组、List集合自定义排序
- 对象的比较与排序(三):实现IComparable<T>和IComparer<T>泛型接口(转)
- 利用PinYin4j 实现List中的对象按数字,字母, 汉字排序
- 对象的比较与排序(二):实现IComparable和IComparer接口 和 Comparer类
- LinkedList中将对象按照某一属性排序,利用 collection.sort(); 来进行调用!
- 利用"委托"实现对象实例按"多字段嵌套"排序
- Java学习笔记——利用接口和observer实现对象监视
- C# List<> 实现 IComparer 接口 排序