这周做了个优化列表的单,单据要求列表按照一定的规则进行排序,但是数据源已经给了,要求是直接在activity里面进行排序(非数据库排序,而且要求也比较多,数据库是实现不了的)
第一个是要被排序的list,第二个是你的自定义排序对比。
对于list排序 网上找到了一种比较合适的形式:
Collections.sort(list, numberComparator);
list列表的类型为:
List<Map<String, String>>
第一个是要被排序的list,第二个是你的自定义排序对比。
这个类要继承自 Comparator 类
class NumberComparator implements Comparator
更具需求,重写类中的compare函数:
class NumberComparator implements Comparator<Map<String, String>> {
@Override
public int compare(Map<String, String> lhs, Map<String, String> rhs) {
String id1 = lhs.get("personCode");
String id2 = rhs.get("personCode");
int i1 = id1.indexOf(inputString);
int i2 = id2.indexOf(inputString);
if (id1.equals(id2)) {
return 0;
}
if ((i1 > i2) || ((i1 == i2) && (id1.length() > id2.length()))
|| ((i1 == i2) && (id1.length() == id2.length()) && (Integer.valueOf(id1) > Integer.valueOf(id2)))) {
return 1;
} else {
return -1;
}
}
}
这个comprare容器盛放
Map<String, String>
对象,
compare函数里面写两个map的比较规则;如果第一个参数大,则返回-1;两参数相等则返回0 否则返回1.(其中可能会有差别,比如说倒序什么的,可以再调试中自行选择正负)
最后在运用
Collections.sort(list, numberComparator);
这一句 就排序好了 简单吧 哈哈