2020-09-15:List.Sort()方法使用

记录一次项目中使用到List排序,后面用到可以不用一脸懵

 namespace record
 {
	 class ISO
	 {
		 public ISO(string dept, string user, string pcbver)
	     {
	           Dept = dept;
	           User = user;
	           PCBVer = pcbver;
	      }
	     public string Dept { get; set; }
	     public string User { get; set; }
	     public string PCBVer { get; set; }   
	 }
	static void Main(string[] args)
	{
		//创建List
		List<ISO> lstISO = new List<ISO>();
		lstISO.Add(new ISO("软体","张三","1.0"));
		lstISO.Add(new ISO("机构","王五","2.0"));
		lstISO.Add(new ISO("硬体","张三","1.0"));
		lstISO.Add(new ISO("软体","李四","1.01"));
		...
		//排序
		lstISO.Sort((left, right) =>
	    {
	        if (left.Dept != right.Dept)
	            return right.Dept.CompareTo(left.Dept);
	        else if (left.User != right.User)
	            return right.User.CompareTo(left.User);
	        else
	            return 0;
	    });
	    foreach (ISO i in lstISO)
        {
             Console.WriteLine(i.Dept + ", " + i.User + ", " + i.PCBVer);
         }
	}
}

输出结果:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用以下代码实现: ``` import java.util.*; public class Main { public static void main(String[] args) { List<Map<String, String>> A = new ArrayList<Map<String, String>>(); A.add(new HashMap<String, String>() {{ put("begintime", "2020-01-01 00:04:00"); put("endtime", "2020-01-01 00:06:00"); }}); A.add(new HashMap<String, String>() {{ put("begintime", "2020-01-01 00:01:05"); put("endtime", "2020-01-01 00:03:15"); }}); A.add(new HashMap<String, String>() {{ put("begintime", "2020-01-01 00:09:00"); put("endtime", "2020-01-01 00:10:00"); }}); A.add(new HashMap<String, String>() {{ put("begintime", "2020-01-01 00:07:35"); put("endtime", "2020-01-01 00:08:40"); }}); A.add(new HashMap<String, String>() {{ put("begintime", "2020-01-01 00:12:00"); put("endtime", "2020-01-01 00:17:00"); }}); A.add(new HashMap<String, String>() {{ put("begintime", "2020-01-01 00:12:05"); put("endtime", "2020-01-01 00:13:10"); }}); A.add(new HashMap<String, String>() {{ put("begintime", "2020-01-01 00:19:00"); put("endtime", "2020-01-01 00:21:00"); }}); A.add(new HashMap<String, String>() {{ put("begintime", "2020-01-01 00:15:20"); put("endtime", "2020-01-01 00:20:45"); }}); List<Map<String, String>> result = new ArrayList<Map<String, String>>(); Collections.sort(A, new Comparator<Map<String, String>>() { public int compare(Map<String, String> a, Map<String, String> b) { return a.get("begintime").compareTo(b.get("begintime")); } }); String beginTime = A.get(0).get("begintime"); String endTime = A.get(0).get("endtime"); for (int i = 1; i < A.size(); i++) { String currBeginTime = A.get(i).get("begintime"); String currEndTime = A.get(i).get("endtime"); if (currBeginTime.compareTo(endTime) <= 0) { endTime = currEndTime.compareTo(endTime) > 0 ? currEndTime : endTime; } else { result.add(new HashMap<String, String>() {{ put("begintime", beginTime); put("endtime", endTime); }}); beginTime = currBeginTime; endTime = currEndTime; } } result.add(new HashMap<String, String>() {{ put("begintime", beginTime); put("endtime", endTime); }}); System.out.println(result); } } ``` 该代码的基本思路是:首先对 A 集合按照 `begintime` 进行排序,然后遍历 A 集合,如果当前时间段与前一个时间段有重合,则更新当前时间段的结束时间,否则将前一个时间段添加到结果集,然后将开始时间和结束时间更新为当前时间段的开始时间和结束时间。最后将最后一个时间段添加到结果集即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值