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
        }
Exemple #2
0
 /// <summary>
 /// 记录当前时间下的值。
 /// </summary>
 /// <param name="value"></param>
 public void Record(long value)
 {
     Records.AddLast(Tuple.Create(value, DateTime.Now));
     RemoveExpiredRecords();
 }