private void MergeFirstTwo() // merges first two lists and puts result at back { List <FinalLine> aList = Records.First(); List <FinalLine> bList = Records.ElementAt(1); List <FinalLine> merged = new List <FinalLine>(); FinalLine aLine = new FinalLine(); FinalLine bLine = new FinalLine(); int a = 0; int b = 0; bool ongoing = true; aLine = aList[a]; a++; bLine = bList[b]; b++; while (ongoing) { if (aLine.ComesBefore(bLine)) { merged.Add(new FinalLine(aLine)); if (a < aList.Count()) { aLine = aList[a]; a++; } else { ongoing = false; merged.Add(new FinalLine(bLine)); for (int i = b; i < bList.Count(); i++) { merged.Add(new FinalLine(bList[i])); } } } else { merged.Add(new FinalLine(bLine)); if (b < bList.Count()) { bLine = bList[b]; b++; } else { ongoing = false; merged.Add(new FinalLine(aLine)); for (int i = a; i < aList.Count(); i++) { merged.Add(new FinalLine(aList[i])); } } } } Records.RemoveFirst(); // remove first two lists Records.RemoveFirst(); Records.AddLast(merged); // add merged result to back }
/// <summary> /// 记录当前时间下的值。 /// </summary> /// <param name="value"></param> public void Record(long value) { Records.AddLast(Tuple.Create(value, DateTime.Now)); RemoveExpiredRecords(); }