Android List排序问题--基础知识

这周做了个优化列表的单,单据要求列表按照一定的规则进行排序,但是数据源已经给了,要求是直接在activity里面进行排序(非数据库排序,而且要求也比较多,数据库是实现不了的)

对于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);
这一句  就排序好了  简单吧  哈哈




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值