比较的对象类
class GroupInfo {
public String groupID; // group id or room id
private int rank; // the position of group after sort
private double amount; // the amount of all devices in this room or group
private String name; // room's name
private int bitMapResoureceId;
public GroupInfo(String gID, Amst amst) {
groupID = gID;
if (amst != null) {
name = amst.getGmst_description();
}
}
public double addAmount(Amst amst) {
if (amst != null) {
amount = amount + amst.getAmeas_value();
}
return amount;
}
public String getName() {
return name;
}
public int getRank() {
return rank;
}
public void setRank(int rank) {
this.rank = rank;
}
public double getAmount() {
return amount;
}
public int getBitMapResoureceId() {
return bitMapResoureceId;
}
public void setBitMapResoureceId(int bitMapResoureceId) {
this.bitMapResoureceId = bitMapResoureceId;
}
}
排序的方法:
public List<GroupInfo> sortGroupInfo(List<GroupInfo> gilist) {
Collections.sort(gilist, new GIComparator(GIComparator.SORT_TYPE_AMOUNT));
int size = gilist.size();
if (size > MARK_DIGIT){ // if the list size greater than MARK_DIGIT
List<GroupInfo> gilist_h = (gilist.subList(0, MARK_DIGIT));
List<GroupInfo> gilist_t= (gilist.subList(MARK_DIGIT, size));
Collections.sort(gilist_t, new GIComparator(GIComparator.SORT_TYPE_GROUPID));
// gilist.clear(); //此处不能将gilist 清空,sublist方法只是返回的视图,其实和父list使用的是同一块内存区域
List<GroupInfo> result_list = new ArrayList<GroupInfo>();
for (GroupInfo gi : gilist_h){
result_list.add(gi);
}
for (GroupInfo gi : gilist_t){
result_list.add(gi);
}
gilist = result_list ;
}
return gilist;
}
实现Comparator接口的类
class GIComparator implements Comparator<GroupInfo> {
public static final int SORT_TYPE_AMOUNT = 1 ; // sort by GroupInfo.amount
public static final int SORT_TYPE_GROUPID = 2 ; // sort by GroupInfo.groupID
private int sort_type ; // the list sort type
public GIComparator(int type){
sort_type = type ;
}
@Override
public int compare(GroupInfo arg0, GroupInfo arg1) {
double amount0 = arg0.getAmount();
double amount1 = arg1.getAmount();
String groupID0 = arg0.groupID;
String groupID1 = arg1.groupID;
int result = 0;
switch (sort_type){
default :
case SORT_TYPE_AMOUNT : //sort by amount and group id
double tmpd = amount0 - amount1;
result = (tmpd != 0 ?(tmpd > 0 ? -1 : 1):groupID0.compareTo(groupID1) );
break ;
case SORT_TYPE_GROUPID : // sort by group id
result = groupID0.compareTo(groupID1);
break ;
}
return result;
}
分享到:
相关推荐
简单的用commons的jar包,运用其中Comparator的方法,希望对你有所帮助。
PSIM中滞环控制器,环宽、频率、占空比等等可以自己设定。
List对象集合的排序:比较器Comparator
主要介绍了Java Comparator比较器实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
Comparable和Comparator接口都可用作普通意义上对象间的比大小,但两个接口在实例化方面的用法不尽相同,接下来我们就来详细对比Java中的Comparable排序接口和Comparator比较器接口
hbase 自带的Comparator只能进行字符串的比较,不能进行数值比较,通过自定义代码实现该功能。 具体使用请参考 http://blog.csdn.net/mtj66/article/details/52574739
comparator比较器工具类c
lpf文件Matlab代码比较器 比较器分析 **************************************************************** *** Analog And Mixed Signal VLSI *** Comparator version 0.0.1 by Porush, Vivek *** **********...
comparator, 提供比较PHP值相等性的功能 比较器这个组件提供了比较PHP值相等性的功能。安装你可以使用 Composer 将这里库作为本地项目添加到项目中:composer require sebastian/comparator如果在开发期间只
在项目过程中,常会用到比较器,比较器也确实是个不错的工具,好用,值得去用.一个简单的例子,供大家学习.
主要介绍了java比较器comparator使用示例,需要的朋友可以参考下
Comator 比较器Java g
NULL 博文链接:https://chaoyi.iteye.com/blog/2082723
各种方法的使用简介。
动态比较器Java 动态比较器
定义不同的Comparator,分别按照成绩列表的最高分,最低分,平均分进行排序。求出学生成绩的最高分,最低分,平均分,并按照从高到低的顺序打印出学生的姓名及各类成绩。(实现类不同的接口)(注意hashcode与equals的...
System.err.println("未找到合适的比较器"); return 1; } } public int compare(String o1, String o2) { String s1 = (String) o1; String s2 = (String) o2; int len1 = s1.length(); int len2 = s2....
Type Comparator用Typescript编写的有用的比较器函数(但是您可以在JS项目上使用它)目录Type Comparator目录比较目录安装美国Type Comparator用Typescript编写的有用的比较器函数(但是您可以在JS项目上使用它)...
用Comparator 的好处是不需要修改源代码, 而是另外实现一个比较器, 当某个自定义的对象需要作比较的时候,把比较器和对象一起传递过去就可以比大小了, 并
myComparator比较器_续program